public void testMultiProject()

in plugins/docker/base-image/src/integrationTest/java/co/elastic/gradle/dockerbase/DockerBaseImageBuildPluginIT.java [63:195]


    public void testMultiProject() throws IOException {
        helper.settings("""
                include("s1")
                include("s2")
                include("s3")
                """
        );
        helper.buildScript(String.format("""
                import java.net.URL
                import %s
                                
                                                            
                plugins {
                   id("co.elastic.vault")
                   id("co.elastic.cli.jfrog")
                   id("co.elastic.docker-base").apply(false)
                }
                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"])
                    }
                }
                                
                subprojects {
                    apply(plugin = "co.elastic.docker-base")
                    print(project.name)
                    configure<BaseImageExtension> {
                        osPackageRepository.set(URL("https://${creds["username"]}:${creds["plaintext"]}@artifactory.elastic.dev/artifactory/gradle-plugins-os-packages"))  
                    }
                }
                """, BaseImageExtension.class.getName()
        ));

        helper.buildScript("s1", """
                plugins {
                   id("co.elastic.vault")
                   id("co.elastic.cli.jfrog")
                }
                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 {
                  fromUbuntu("ubuntu", "20.04")
                  install("patch")
                }
                """
        );
        helper.buildScript("s2", """
                plugins {
                   id("co.elastic.vault")
                   id("co.elastic.cli.jfrog")
                }
                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 {
                  from(project(":s1"))
                  run("patch --version")
                  install("curl")
                }
                """
        );
        helper.buildScript("s3", """
                plugins {
                   id("co.elastic.vault")
                   id("co.elastic.cli.jfrog")
                }                
                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 {
                  from(project(":s2"))
                  run("curl --version")
                }
                """
        );

        runGradleTask(":s1:dockerBaseImageLockfile");
        runGradleTask(":s2:dockerBaseImageLockfile");
        runGradleTask(":s3:dockerBaseImageLockfile");
        runGradleTask("dockerLocalImport");
    }