public void testLockfileWithEmulationWolfiFromProject()

in plugins/docker/base-image/src/integrationTest/java/co/elastic/gradle/dockerbase/DockerBaseImageLockFileIT.java [33:138]


    public void testLockfileWithEmulationWolfiFromProject() throws IOException {
        helper.settings("""
                include("p1")
                include("p2")
                """);
        helper.buildScript("evaluationDependsOnChildren()");
        helper.buildScript("p1", """
                    import java.net.URL
                    plugins {
                        id("co.elastic.cli.jfrog")
                        id("co.elastic.vault")
                        id("co.elastic.docker-base")
                    }
                    
                                vault {
                      address.set("https://vault-ci-prod.elastic.dev")
                      auth {
                        ghTokenFile()
                        ghTokenEnv()
                        tokenEnv()
                        roleAndSecretEnv()
                      }
                }
                val creds = vault.readAndCacheSecret("secret/ci/elastic-gradle-plugins/artifactory_creds").get()
                cli {
                    jfrog {
                        username.set(creds["username"])
                        password.set(creds["plaintext"])
                    }
                }
                    
                    dockerBaseImage {
                        osPackageRepository.set(
                            URL("https://${creds["username"]}:${creds["plaintext"]}@artifactory.elastic.dev/artifactory/gradle-plugins-os-packages")
                        )
                        dockerTagLocalPrefix.set("docker.elastic.co/gradle")
                        dockerTagPrefix.set("docker.elastic.co/cloud-ci")
                        fromWolfi("docker.elastic.co/wolfi/chainguard-base", "latest")
                    }
                    """);
        helper.buildScript("p2", """
                    import java.net.URL
                    plugins {
                        id("co.elastic.cli.jfrog")
                        id("co.elastic.vault")
                        id("co.elastic.docker-base")
                    }
                    
                    vault {
                      address.set("https://vault-ci-prod.elastic.dev")
                      auth {
                        ghTokenFile()
                        ghTokenEnv()
                        tokenEnv()
                        roleAndSecretEnv()
                      }
                }
                val creds = vault.readAndCacheSecret("secret/ci/elastic-gradle-plugins/artifactory_creds").get()
                cli {
                    jfrog {
                        username.set(creds["username"])
                        password.set(creds["plaintext"])
                    }
                }
                    
                    dockerBaseImage {
                        osPackageRepository.set(
                            URL("https://${creds["username"]}:${creds["plaintext"]}@artifactory.elastic.dev/artifactory/gradle-plugins-os-packages")
                        )
                        dockerTagLocalPrefix.set("docker.elastic.co/gradle")
                        dockerTagPrefix.set("docker.elastic.co/cloud-ci")
                        from(project(":p1"))
                    }
                    """);
        System.out.println(runGradleTask("p1:dockerBaseImageLockfileAllWithEmulation").getOutput());

        final BuildResult result = runGradleTask("p2:dockerBaseImageLockfileAllWithEmulation");
        System.out.println(result.getOutput());

        final BuildResult dockerBaseImageBuild = runGradleTask("dockerBaseImageBuild");
        System.out.println("==== dockerBaseImageBuild ====");
        System.out.println(dockerBaseImageBuild.getOutput());
        //Building the image should not build the emulation tasks
        Arrays.stream(Architecture.values()).map(Architecture::dockerName).forEach(arch ->
                {
                    Assertions.assertFalse(
                            dockerBaseImageBuild.getTasks().stream().map(BuildTask::getPath).anyMatch(it -> it.contains(arch)),
                            "Expected that with dockerBaseImageBuild tasks requiring emulation did not run, but they did"
                    );
                }
        );

        final BuildResult dockerBaseImageLocalImport = runGradleTask("dockerBaseImageLocalImport");
        System.out.println("==== dockerBaseImageLocalImport ====");
        System.out.println(dockerBaseImageLocalImport.getOutput());
        //Building the image should not build the emulation tasks
        Arrays.stream(Architecture.values()).map(Architecture::dockerName).forEach(arch ->
                {
                    Assertions.assertFalse(
                            dockerBaseImageLocalImport.getTasks().stream().map(BuildTask::getPath).anyMatch(it -> it.contains(arch)),
                            "Expected that with dockerBaseImageLocalImport tasks requiring emulation did not run, but they did"
                    );
                }
        );

    }