mirror of
https://github.com/gradle/actions.git
synced 2025-08-26 20:01:28 +08:00
Capture config-cache hit in build results
This commit is contained in:
parent
94355bbb2f
commit
579a013225
@ -1,5 +1,10 @@
|
|||||||
import org.gradle.tooling.events.*
|
import org.gradle.tooling.events.*
|
||||||
import org.gradle.tooling.events.task.*
|
import org.gradle.tooling.events.task.*
|
||||||
|
import org.gradle.internal.operations.*
|
||||||
|
import org.gradle.initialization.*
|
||||||
|
import org.gradle.api.internal.tasks.execution.*
|
||||||
|
import org.gradle.execution.*
|
||||||
|
import org.gradle.internal.build.event.BuildEventListenerRegistryInternal
|
||||||
import org.gradle.util.GradleVersion
|
import org.gradle.util.GradleVersion
|
||||||
|
|
||||||
settingsEvaluated { settings ->
|
settingsEvaluated { settings ->
|
||||||
@ -11,11 +16,12 @@ settingsEvaluated { settings ->
|
|||||||
spec.getParameters().getInvocationId().set(gradle.ext.invocationId)
|
spec.getParameters().getInvocationId().set(gradle.ext.invocationId)
|
||||||
})
|
})
|
||||||
|
|
||||||
gradle.services.get(BuildEventsListenerRegistry).onTaskCompletion(projectTracker)
|
gradle.services.get(BuildEventListenerRegistryInternal).onOperationCompletion(projectTracker)
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class BuildResultsRecorder implements BuildService<BuildResultsRecorder.Params>, OperationCompletionListener, AutoCloseable {
|
abstract class BuildResultsRecorder implements BuildService<BuildResultsRecorder.Params>, BuildOperationListener, AutoCloseable {
|
||||||
private boolean buildFailed = false
|
private boolean buildFailed = false
|
||||||
|
private boolean configCacheHit = true
|
||||||
interface Params extends BuildServiceParameters {
|
interface Params extends BuildServiceParameters {
|
||||||
Property<String> getRootProjectName()
|
Property<String> getRootProjectName()
|
||||||
Property<String> getRootProjectDir()
|
Property<String> getRootProjectDir()
|
||||||
@ -24,11 +30,21 @@ abstract class BuildResultsRecorder implements BuildService<BuildResultsRecorder
|
|||||||
Property<String> getInvocationId()
|
Property<String> getInvocationId()
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onFinish(FinishEvent finishEvent) {
|
void started(BuildOperationDescriptor buildOperation, OperationStartEvent startEvent) {}
|
||||||
if (finishEvent instanceof TaskFinishEvent && finishEvent.result instanceof TaskFailureResult) {
|
|
||||||
|
void progress(OperationIdentifier operationIdentifier, OperationProgressEvent progressEvent) {}
|
||||||
|
|
||||||
|
void finished(BuildOperationDescriptor buildOperation, OperationFinishEvent finishEvent) {
|
||||||
|
if (buildOperation.details in EvaluateSettingsBuildOperationType.Details) {
|
||||||
|
// Got EVALUATE SETTINGS event: not a config-cache hit"
|
||||||
|
configCacheHit = false
|
||||||
|
}
|
||||||
|
if (buildOperation.details in RunRootBuildWorkBuildOperationType.Details) {
|
||||||
|
if (finishEvent.failure != null) {
|
||||||
buildFailed = true
|
buildFailed = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
@ -38,7 +54,8 @@ abstract class BuildResultsRecorder implements BuildService<BuildResultsRecorder
|
|||||||
requestedTasks: getParameters().getRequestedTasks().get(),
|
requestedTasks: getParameters().getRequestedTasks().get(),
|
||||||
gradleVersion: GradleVersion.current().version,
|
gradleVersion: GradleVersion.current().version,
|
||||||
gradleHomeDir: getParameters().getGradleHomeDir().get(),
|
gradleHomeDir: getParameters().getGradleHomeDir().get(),
|
||||||
buildFailed: buildFailed
|
buildFailed: buildFailed,
|
||||||
|
configCacheHit: configCacheHit
|
||||||
]
|
]
|
||||||
|
|
||||||
def runnerTempDir = System.getProperty("RUNNER_TEMP") ?: System.getenv("RUNNER_TEMP")
|
def runnerTempDir = System.getProperty("RUNNER_TEMP") ?: System.getenv("RUNNER_TEMP")
|
||||||
|
@ -76,7 +76,8 @@ void captureUsingBuildFinished(gradle, String invocationId, ResultsWriter result
|
|||||||
requestedTasks: gradle.startParameter.taskNames.join(" "),
|
requestedTasks: gradle.startParameter.taskNames.join(" "),
|
||||||
gradleVersion: GradleVersion.current().version,
|
gradleVersion: GradleVersion.current().version,
|
||||||
gradleHomeDir: gradle.gradleHomeDir.absolutePath,
|
gradleHomeDir: gradle.gradleHomeDir.absolutePath,
|
||||||
buildFailed: result.failure != null
|
buildFailed: result.failure != null,
|
||||||
|
configCacheHit: false
|
||||||
]
|
]
|
||||||
resultsWriter.writeToResultsFile("build-results", invocationId, buildResults)
|
resultsWriter.writeToResultsFile("build-results", invocationId, buildResults)
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.gradle.gradlebuildaction
|
package com.gradle.gradlebuildaction
|
||||||
|
|
||||||
import groovy.json.JsonSlurper
|
import groovy.json.JsonSlurper
|
||||||
import org.gradle.util.GradleVersion
|
|
||||||
|
|
||||||
import static org.junit.Assume.assumeTrue
|
import static org.junit.Assume.assumeTrue
|
||||||
|
|
||||||
@ -15,7 +14,7 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(testGradleVersion.gradleVersion)
|
run(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, false)
|
assertResults('help', testGradleVersion, false)
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -29,7 +28,7 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
runAndFail(testGradleVersion.gradleVersion)
|
runAndFail(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('expectFailure', testGradleVersion, true, false)
|
assertResults('expectFailure', testGradleVersion, true)
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -49,7 +48,7 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(['help', '--configuration-cache'], testGradleVersion.gradleVersion)
|
run(['help', '--configuration-cache'], testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, false)
|
assertResults('help', testGradleVersion, false, true)
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << CONFIGURATION_CACHE_VERSIONS
|
testGradleVersion << CONFIGURATION_CACHE_VERSIONS
|
||||||
@ -63,7 +62,8 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(testGradleVersion.gradleVersion)
|
run(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, true)
|
assertResults('help', testGradleVersion, false)
|
||||||
|
assertScanResults()
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -77,7 +77,8 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(testGradleVersion.gradleVersion)
|
run(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, true)
|
assertResults('help', testGradleVersion, false)
|
||||||
|
assertScanResults()
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -91,7 +92,7 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(['help', '--no-scan'], testGradleVersion.gradleVersion)
|
run(['help', '--no-scan'], testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, false)
|
assertResults('help', testGradleVersion, false)
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -106,7 +107,8 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
runAndFail(testGradleVersion.gradleVersion)
|
runAndFail(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('expectFailure', testGradleVersion, true, true)
|
assertResults('expectFailure', testGradleVersion, true)
|
||||||
|
assertScanResults()
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -120,7 +122,8 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(['help', '--configuration-cache'], testGradleVersion.gradleVersion)
|
run(['help', '--configuration-cache'], testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, true)
|
assertResults('help', testGradleVersion, false, false)
|
||||||
|
assertScanResults()
|
||||||
assert buildResultFile.delete()
|
assert buildResultFile.delete()
|
||||||
assert scanResultFile.delete()
|
assert scanResultFile.delete()
|
||||||
|
|
||||||
@ -129,6 +132,7 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, true)
|
assertResults('help', testGradleVersion, false, true)
|
||||||
|
assertScanResults()
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << CONFIGURATION_CACHE_VERSIONS
|
testGradleVersion << CONFIGURATION_CACHE_VERSIONS
|
||||||
@ -144,7 +148,8 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
runAndFail(testGradleVersion.gradleVersion)
|
runAndFail(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('expectFailure', testGradleVersion, true, false, true)
|
assertResults('expectFailure', testGradleVersion, true)
|
||||||
|
assertScanResults(true)
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << ALL_VERSIONS
|
testGradleVersion << ALL_VERSIONS
|
||||||
@ -205,7 +210,8 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
run(testGradleVersion.gradleVersion)
|
run(testGradleVersion.gradleVersion)
|
||||||
|
|
||||||
then:
|
then:
|
||||||
assertResults('help', testGradleVersion, false, true)
|
assertResults('help', testGradleVersion, false)
|
||||||
|
assertScanResults()
|
||||||
|
|
||||||
where:
|
where:
|
||||||
testGradleVersion << SETTINGS_PLUGIN_VERSIONS
|
testGradleVersion << SETTINGS_PLUGIN_VERSIONS
|
||||||
@ -233,7 +239,7 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
void assertResults(String task, TestGradleVersion testGradleVersion, boolean hasFailure, boolean hasBuildScan, boolean scanUploadFailed = false) {
|
void assertResults(String task, TestGradleVersion testGradleVersion, boolean hasFailure, boolean configCacheHit = false) {
|
||||||
def results = new JsonSlurper().parse(buildResultFile)
|
def results = new JsonSlurper().parse(buildResultFile)
|
||||||
assert results['rootProjectName'] == ROOT_PROJECT_NAME
|
assert results['rootProjectName'] == ROOT_PROJECT_NAME
|
||||||
assert results['rootProjectDir'] == testProjectDir.canonicalPath
|
assert results['rootProjectDir'] == testProjectDir.canonicalPath
|
||||||
@ -241,12 +247,13 @@ class TestBuildResultRecorder extends BaseInitScriptTest {
|
|||||||
assert results['gradleVersion'] == testGradleVersion.gradleVersion.version
|
assert results['gradleVersion'] == testGradleVersion.gradleVersion.version
|
||||||
assert results['gradleHomeDir'] != null
|
assert results['gradleHomeDir'] != null
|
||||||
assert results['buildFailed'] == hasFailure
|
assert results['buildFailed'] == hasFailure
|
||||||
|
assert results['configCacheHit'] == configCacheHit
|
||||||
if (hasBuildScan || scanUploadFailed) {
|
|
||||||
def scanResults = new JsonSlurper().parse(scanResultFile)
|
|
||||||
assert scanResults['buildScanUri'] == (hasBuildScan ? "${mockScansServer.address}s/${PUBLIC_BUILD_SCAN_ID}" : null)
|
|
||||||
assert scanResults['buildScanFailed'] == scanUploadFailed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void assertScanResults(boolean scanUploadFailed = false) {
|
||||||
|
def scanResults = new JsonSlurper().parse(scanResultFile)
|
||||||
|
assert scanResults['buildScanUri'] == (scanUploadFailed ? null : "${mockScansServer.address}s/${PUBLIC_BUILD_SCAN_ID}")
|
||||||
|
assert scanResults['buildScanFailed'] == scanUploadFailed
|
||||||
}
|
}
|
||||||
|
|
||||||
private File getBuildResultFile() {
|
private File getBuildResultFile() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user