public void withMultiarchPlugin()

in plugins/docker/component-image/src/integrationTest/java/co/elastic/gradle/dockercomponent/DockerComponentPluginIT.java [175:254]


    public void withMultiarchPlugin() throws IOException, InterruptedException {
        helper.settings("""
                     rootProject.name = "just-a-test"
                """);
        Files.copy(Objects.requireNonNull(getClass().getResourceAsStream("/test_created_image.sh")), helper.projectDir().resolve("test_created_image.sh"));
        helper.buildScript("""
                import kotlin.random.Random
                                
                plugins {
                       id("co.elastic.docker-component")
                       id("co.elastic.vault")
                       id("co.elastic.lifecycle-multi-arch")                       
                }
                vault {
                          address.set("https://vault-ci-prod.elastic.dev")
                          auth {
                            ghTokenFile()
                            ghTokenEnv()
                            tokenEnv()
                            roleAndSecretEnv()
                          }
                }
                cli {
                     val credentials = vault.readAndCacheSecret("secret/ci/elastic-gradle-plugins/artifactory_creds").get()
                     snyk {                         
                           username.set(credentials["username"])
                           password.set(credentials["plaintext"])
                     }
                     manifestTool {                         
                           username.set(credentials["username"])
                           password.set(credentials["plaintext"])
                     }
                }
                tasks.withType<co.elastic.gradle.snyk.SnykCLIExecTask> {
                       environment(
                            "SNYK_TOKEN",
                            vault.readAndCacheSecret("secret/ci/elastic-gradle-plugins/snyk_api_key").get()["apikey"].toString()
                        )
                }
                dockerComponentImage {
                    buildAll {
                        from("ubuntu", "20.04")
                        maintainer("Jon Doe", "jon.doe@email.com")
                        copySpec("1000:1000") {
                            from(fileTree(projectDir)) {
                                include("build.gradle.kts")
                            }
                            into("home")
                        }
                        copySpec {
                           from("build.gradle.kts") {
                              into("home/${architecture.toString().toLowerCase()}")
                           }
                        }
                        copySpec {
                           from("test_created_image.sh")
                        }
                        entryPoint(listOf("/test_created_image.sh"))
                        cmd(listOf("foo", "bar"))
                        env("MY_FOO" to "BAR")
                        workDir("/home")
                        exposeTcp(80)
                        exposeUdp(80)
                        label("foo" to "bar")
                        changingLabel("random" to Random.nextInt(0, 10000).toString())
                    }
                }
                    """);
        Files.copy(Objects.requireNonNull(getClass().getResourceAsStream("/docker-component-image.lock")), helper.projectDir().resolve("docker-component-image.lock"));

        final BuildResult buildPlatformIndependent = runGradleTask("buildPlatformIndependent");
        System.out.println(buildPlatformIndependent.getOutput());
        assertNull(buildPlatformIndependent.task(":dockerComponentImageBuild"), "Component image build should not run with `buildPlatformIndependent` but it did");

        final BuildResult buildForPlatform = runGradleTask("buildForPlatform");
        assertNull(buildForPlatform.task(":dockerComponentImageBuild"), "Component image build should not run with `buildForPlatform` but it did");

        final BuildResult buildCombinePlatform = runGradleTask("buildCombinePlatform");
        assertNotNull(buildCombinePlatform.task(":dockerComponentImageBuild"), "Component image build should run with `buildCombinePlatform` but it did not");
    }