Skip to content

Commit

Permalink
fix(jenkins): Enable properties and artifacts with job name as query …
Browse files Browse the repository at this point in the history
…parameter (#1230) (#1232)

(cherry picked from commit 097a08a)

Co-authored-by: Christos Arvanitis <[email protected]>
  • Loading branch information
mergify[bot] and christosarvanitis authored Feb 27, 2024
1 parent 46230e8 commit 5648c17
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,20 @@ class BuildController {
return Collections.emptyList()
}


@RequestMapping(value = '/builds/artifacts/{buildNumber}/{master}')
@PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')")
List<Artifact> getBuildResults(@PathVariable String master, @PathVariable
Integer buildNumber, @RequestParam("job") String job ,@Query("propertyFile") String propertyFile) {
def buildService = getBuildService(master)
GenericBuild build = jobStatus(buildService, master, job, buildNumber)
if (build && buildService instanceof BuildProperties && artifactExtractor != null) {
build.properties = buildService.getBuildProperties(job, build, propertyFile)
return artifactExtractor.extractArtifacts(build)
}
return Collections.emptyList()
}

@RequestMapping(value = '/builds/queue/{master}/{item}')
@PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')")
Object getQueueLocation(@PathVariable String master, @PathVariable int item) {
Expand Down Expand Up @@ -335,6 +349,22 @@ class BuildController {
return Collections.emptyMap()
}


@RequestMapping(value = '/builds/properties/{buildNumber}/{fileName}/{master}')
@PreAuthorize("hasPermission(#master, 'BUILD_SERVICE', 'READ')")
Map<String, Object> getProperties(
@PathVariable String master,
@PathVariable Integer buildNumber, @PathVariable
String fileName, @RequestParam("job") String job) {
def buildService = getBuildService(master)
if (buildService instanceof BuildProperties) {
BuildProperties buildProperties = (BuildProperties) buildService
def genericBuild = buildService.getGenericBuild(job, buildNumber)
return buildProperties.getBuildProperties(job, genericBuild, fileName)
}
return Collections.emptyMap()
}

private BuildOperations getBuildService(String master) {
def buildService = buildServices.getService(master)
if (buildService == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,21 @@ class BuildControllerSpec extends Specification {
.andReturn().response
}

void 'get properties of a build with job Name in query parameters' () {
given:
1 * jenkinsService.getGenericBuild(JOB_NAME, BUILD_NUMBER) >> genericBuild
1 * jenkinsService.getBuildProperties(JOB_NAME, genericBuild, FILE_NAME) >> ['foo': 'bar']

when:
MockHttpServletResponse response = mockMvc.perform(
get("/builds/properties/${BUILD_NUMBER}/${FILE_NAME}/${JENKINS_SERVICE}")
.param("job", JOB_NAME)
.accept(MediaType.APPLICATION_JSON)).andReturn().response

then:
response.contentAsString == "{\"foo\":\"bar\"}"
}

void 'get properties of a travis build'() {
given:
1 * travisService.getGenericBuild(JOB_NAME, BUILD_NUMBER) >> genericBuild
Expand Down

0 comments on commit 5648c17

Please sign in to comment.