/* * Capture information for each executed Gradle build to display in the job summary. */ import org.gradle.util.GradleVersion // Only run against root build. Do not run against included builds. def isTopLevelBuild = gradle.getParent() == null if (isTopLevelBuild) { def version = GradleVersion.current().baseVersion def atLeastGradle3 = version >= GradleVersion.version("3.0") def atLeastGradle6 = version >= GradleVersion.version("6.0") if (atLeastGradle6) { settingsEvaluated { settings -> if (settings.pluginManager.hasPlugin("com.gradle.enterprise")) { captureUsingBuildScanPublished(settings.extensions["gradleEnterprise"].buildScan, settings.rootProject.name) } else { captureUsingBuildFinished(gradle) } } } else if (atLeastGradle3) { projectsEvaluated { gradle -> if (gradle.rootProject.pluginManager.hasPlugin("com.gradle.build-scan")) { captureUsingBuildScanPublished(gradle.rootProject.extensions["buildScan"], gradle.rootProject.name) } else { captureUsingBuildFinished(gradle) } } } } def captureUsingBuildScanPublished(buildScanExtension, rootProjectName) { buildScanExtension.with { def requestedTasks = gradle.startParameter.taskNames.join(" ") def gradleVersion = GradleVersion.current().version def buildFailed = false buildFinished { result -> buildFailed = (result.failure != null) } buildScanPublished { buildScan -> def buildScanUri = buildScan.buildScanUri.toASCIIString() def buildResults = [ rootProject: rootProjectName, requestedTasks: requestedTasks, gradleVersion: gradleVersion, buildFailed: buildFailed, buildScanUri: buildScanUri ] def buildResultsDir = new File(System.getenv("RUNNER_TEMP"), ".build-results") buildResultsDir.mkdirs() def buildResultsFile = new File(buildResultsDir, System.getenv("GITHUB_ACTION") + System.currentTimeMillis() + ".json") buildResultsFile << groovy.json.JsonOutput.toJson(buildResults) println("::set-output name=build-scan-url::${buildScan.buildScanUri}") } } } def captureUsingBuildFinished(gradle) { gradle.buildFinished { result -> def buildResults = [ rootProject: gradle.rootProject.name, requestedTasks: gradle.startParameter.taskNames.join(" "), gradleVersion: GradleVersion.current().version, buildFailed: result.failure != null, buildScanUri: null ] def buildResultsDir = new File(System.getenv("RUNNER_TEMP"), ".build-results") buildResultsDir.mkdirs() def buildResultsFile = new File(buildResultsDir, System.getenv("GITHUB_ACTION") + System.currentTimeMillis() + ".json") buildResultsFile << groovy.json.JsonOutput.toJson(buildResults) } }