diff --git a/src/main/groovy/io/micronaut/build/MicronautBuildCommonPlugin.groovy b/src/main/groovy/io/micronaut/build/MicronautBuildCommonPlugin.groovy index 2395c8fc..e204f8e8 100644 --- a/src/main/groovy/io/micronaut/build/MicronautBuildCommonPlugin.groovy +++ b/src/main/groovy/io/micronaut/build/MicronautBuildCommonPlugin.groovy @@ -108,21 +108,7 @@ class MicronautBuildCommonPlugin implements Plugin { } } - // Predictive test selection is enabled if: - // an environment variable is explicitly configured and set to true - // or a system property is explicitly configured and set to true - // or it's a local build - def testSelectionEnabled = project.providers.environmentVariable("PREDICTIVE_TEST_SELECTION") - .orElse(project.providers.systemProperty("predictiveTestSelection")) - .map { - if (it.trim()) { - Boolean.parseBoolean(it) - } else { - true - } - } - .orElse(micronautBuildExtension.environment.isNotGithubAction()) - + def testSelectionEnabled = micronautBuildExtension.environment.isTestSelectionEnabled() project.dependencies { testImplementation(testSelectionEnabled.map { enabled -> if (enabled) { diff --git a/src/main/java/io/micronaut/build/BuildEnvironment.java b/src/main/java/io/micronaut/build/BuildEnvironment.java index bc185b90..cc26cdad 100644 --- a/src/main/java/io/micronaut/build/BuildEnvironment.java +++ b/src/main/java/io/micronaut/build/BuildEnvironment.java @@ -20,13 +20,15 @@ public class BuildEnvironment { + public static final String PREDICTIVE_TEST_SELECTION_ENV_VAR = "PREDICTIVE_TEST_SELECTION"; + public static final String PREDICTIVE_TEST_SELECTION_SYSPROP = "predictiveTestSelection"; private final ProviderFactory providers; private final Provider githubAction; private final boolean isMigrationActive; public BuildEnvironment(ProviderFactory providers) { this.providers = providers; - this.githubAction = trueWhenEnvVarPresent( "GITHUB_ACTIONS"); + this.githubAction = trueWhenEnvVarPresent("GITHUB_ACTIONS"); this.isMigrationActive = !providers.systemProperty("strictBuild") .forUseAtConfigurationTime() .isPresent(); @@ -47,6 +49,22 @@ public Provider trueWhenEnvVarPresent(String envVar) { .orElse(false); } + public Provider isTestSelectionEnabled() { + // Predictive test selection is enabled if: + // an environment variable is explicitly configured and set to true + // or a system property is explicitly configured and set to true + // or it's a local build + return providers.environmentVariable(PREDICTIVE_TEST_SELECTION_ENV_VAR) + .orElse(providers.systemProperty(PREDICTIVE_TEST_SELECTION_SYSPROP)) + .map(it -> { + if (it.trim().length() > 0) { + return Boolean.parseBoolean(it); + } + return false; + }) + .orElse(isNotGithubAction()); + } + public void duringMigration(Runnable action) { if (isMigrationActive) { action.run(); diff --git a/src/main/java/io/micronaut/build/MicronautGradleEnterprisePlugin.java b/src/main/java/io/micronaut/build/MicronautGradleEnterprisePlugin.java index 0f64ffb8..ffb147dd 100644 --- a/src/main/java/io/micronaut/build/MicronautGradleEnterprisePlugin.java +++ b/src/main/java/io/micronaut/build/MicronautGradleEnterprisePlugin.java @@ -32,9 +32,14 @@ import java.lang.reflect.InvocationTargetException; +import static io.micronaut.build.BuildEnvironment.PREDICTIVE_TEST_SELECTION_ENV_VAR; import static io.micronaut.build.ProviderUtils.envOrSystemProperty; public class MicronautGradleEnterprisePlugin implements Plugin { + private static final String[] SAFE_TO_LOG_ENV_VARIABLES = new String[] { + PREDICTIVE_TEST_SELECTION_ENV_VAR + }; + @Override public void apply(Settings settings) { PluginManager pluginManager = settings.getPluginManager(); @@ -89,6 +94,18 @@ private void configureGradleEnterprise(Settings settings, }); } }); + BuildEnvironment buildEnvironment = new BuildEnvironment(providers); + if (Boolean.TRUE.equals(buildEnvironment.isTestSelectionEnabled().get())) { + ge.getBuildScan().tag("Predictive Test Selection"); + } + captureSafeEnvironmentVariables(ge); + } + } + + private void captureSafeEnvironmentVariables(GradleEnterpriseExtension ge) { + for (String variable : SAFE_TO_LOG_ENV_VARIABLES) { + String value = System.getenv(variable); + ge.getBuildScan().value("env." + variable, value == null ? "" : value); } }