Capture build results when GE plugin is applied but no build-scan is published

This commit is contained in:
Daz DeBoer
2022-06-05 00:18:20 -06:00
parent 6001bc9edc
commit 3f2d9cde44
3 changed files with 46 additions and 18 deletions

View File

@@ -6,8 +6,9 @@ import org.gradle.util.GradleVersion
// But projectsEvaluated is good enough, since the build service won't catch configuration failures anyway
projectsEvaluated {
def projectTracker = gradle.sharedServices.registerIfAbsent("gradle-build-action-buildResultsRecorder", BuildResultsRecorder, { spec ->
spec.getParameters().getRootProject().set(gradle.rootProject.name);
spec.getParameters().getRequestedTasks().set(gradle.startParameter.taskNames.join(" "));
spec.getParameters().getRootProject().set(gradle.rootProject.name)
spec.getParameters().getRequestedTasks().set(gradle.startParameter.taskNames.join(" "))
spec.getParameters().getInvocationId().set(gradle.ext.invocationId)
})
gradle.services.get(BuildEventsListenerRegistry).onTaskCompletion(projectTracker)
@@ -16,8 +17,9 @@ projectsEvaluated {
abstract class BuildResultsRecorder implements BuildService<BuildResultsRecorder.Params>, OperationCompletionListener, AutoCloseable {
private boolean buildFailed = false
interface Params extends BuildServiceParameters {
Property<String> getRootProject();
Property<String> getRequestedTasks();
Property<String> getRootProject()
Property<String> getRequestedTasks()
Property<String> getInvocationId()
}
public void onFinish(FinishEvent finishEvent) {
@@ -38,7 +40,7 @@ abstract class BuildResultsRecorder implements BuildService<BuildResultsRecorder
def buildResultsDir = new File(System.getenv("RUNNER_TEMP"), ".build-results")
buildResultsDir.mkdirs()
def buildResultsFile = new File(buildResultsDir, System.getenv("GITHUB_ACTION") + System.currentTimeMillis() + ".json")
def buildResultsFile = new File(buildResultsDir, System.getenv("GITHUB_ACTION") + getParameters().getInvocationId().get() + ".json")
buildResultsFile << groovy.json.JsonOutput.toJson(buildResults)
}
}