diff --git a/src/main/java/hudson/plugins/gradle/BuildScanAction.java b/src/main/java/hudson/plugins/gradle/BuildScanAction.java index 21936768..58cca9d3 100644 --- a/src/main/java/hudson/plugins/gradle/BuildScanAction.java +++ b/src/main/java/hudson/plugins/gradle/BuildScanAction.java @@ -1,11 +1,14 @@ package hudson.plugins.gradle; import hudson.model.Action; +import org.kohsuke.stapler.export.Exported; +import org.kohsuke.stapler.export.ExportedBean; import java.util.ArrayList; import java.util.Collections; import java.util.List; +@ExportedBean public class BuildScanAction implements Action { // Backward compatibility for old plugins versions which created an action per-scan @@ -32,6 +35,7 @@ public void addScanUrl(String scanUrl) { scanUrls.add(scanUrl); } + @Exported public List getScanUrls() { return Collections.unmodifiableList(scanUrls); } diff --git a/src/test/groovy/hudson/plugins/gradle/BuildScanIntegrationTest.groovy b/src/test/groovy/hudson/plugins/gradle/BuildScanIntegrationTest.groovy index 630f51ac..c510de1a 100644 --- a/src/test/groovy/hudson/plugins/gradle/BuildScanIntegrationTest.groovy +++ b/src/test/groovy/hudson/plugins/gradle/BuildScanIntegrationTest.groovy @@ -89,6 +89,27 @@ class BuildScanIntegrationTest extends AbstractIntegrationTest { new URL(action.scanUrls.get(0)) } + def 'build scan action is exposed via rest API'() { + given: + gradleInstallationRule.gradleVersion = '3.4' + gradleInstallationRule.addInstallation() + FreeStyleProject p = j.createFreeStyleProject() + p.buildersList.add(buildScriptBuilder()) + p.buildersList.add(new Gradle(tasks: 'hello', gradleName: '3.4', switches: '-Dscan --no-daemon')) + + + when: + def build = j.buildAndAssertSuccess(p) + + then: + println JenkinsRule.getLog(build) + + def json = j.getJSON("${build.url}/api/json?tree=actions[*]") + def scanUrls = json.getJSONObject().get('actions').get(1).get('scanUrls') + scanUrls.size() == 1 + new URL(scanUrls.get(0)) + } + private static String getGradleEnterpriseConfiguration() { """