Skip to content

Commit abce091

Browse files
fix(jenkins): Enable properties and artifacts with job name as query parameter (#1393) (#1395)
Co-authored-by: Jason <[email protected]> (cherry picked from commit 44317c1) Co-authored-by: Christos Arvanitis <[email protected]>
1 parent 04f380b commit abce091

File tree

3 files changed

+50
-2
lines changed

3 files changed

+50
-2
lines changed

echo-core/src/main/java/com/netflix/spinnaker/echo/build/BuildInfoService.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,12 @@ public Map<String, Object> getProperties(BuildEvent event, String propertyFile)
9393
}
9494
String propertyFileFinal = propertyFile;
9595
if (StringUtils.isNoneEmpty(master, job, propertyFile)) {
96-
return retry(() -> igorService.getPropertyFile(buildNumber, propertyFileFinal, master, job));
96+
return retry(
97+
() ->
98+
igorConfigurationProperties.isJobNameAsQueryParameter()
99+
? igorService.getPropertyFileWithJobQueryParameter(
100+
buildNumber, propertyFileFinal, master, job)
101+
: igorService.getPropertyFile(buildNumber, propertyFileFinal, master, job));
97102
}
98103
return Collections.emptyMap();
99104
}
@@ -103,7 +108,12 @@ private List<Artifact> getArtifactsFromPropertyFile(BuildEvent event, String pro
103108
String job = event.getContent().getProject().getName();
104109
int buildNumber = event.getBuildNumber();
105110
if (StringUtils.isNoneEmpty(master, job, propertyFile)) {
106-
return retry(() -> igorService.getArtifacts(buildNumber, propertyFile, master, job));
111+
return retry(
112+
() ->
113+
igorConfigurationProperties.isJobNameAsQueryParameter()
114+
? igorService.getArtifactsWithJobQueryParameter(
115+
buildNumber, propertyFile, master, job)
116+
: igorService.getArtifacts(buildNumber, propertyFile, master, job));
107117
}
108118
return Collections.emptyList();
109119
}

echo-core/src/main/java/com/netflix/spinnaker/echo/services/IgorService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,27 @@ Map<String, Object> getPropertyFile(
4444
@Path("master") String master,
4545
@Path(value = "job", encode = false) String job);
4646

47+
@GET("/builds/properties/{buildNumber}/{fileName}/{master}")
48+
Map<String, Object> getPropertyFileWithJobQueryParameter(
49+
@Path("buildNumber") Integer buildNumber,
50+
@Path("fileName") String fileName,
51+
@Path("master") String master,
52+
@Query(value = "job") String job);
53+
4754
@GET("/builds/artifacts/{buildNumber}/{master}/{job}")
4855
List<Artifact> getArtifacts(
4956
@Path("buildNumber") Integer buildNumber,
5057
@Query("propertyFile") String propertyFile,
5158
@Path("master") String master,
5259
@Path(value = "job", encode = false) String job);
5360

61+
@GET("/builds/artifacts/{buildNumber}/{master}")
62+
List<Artifact> getArtifactsWithJobQueryParameter(
63+
@Path("buildNumber") Integer buildNumber,
64+
@Query("propertyFile") String propertyFile,
65+
@Path("master") String master,
66+
@Query(value = "job") String job);
67+
5468
@GET("/artifacts/{provider}/{packageName}")
5569
List<String> getVersions(
5670
@Path("provider") String provider, @Path("packageName") String packageName);

echo-pipelinetriggers/src/test/groovy/com/netflix/spinnaker/echo/pipelinetriggers/eventhandlers/BuildEventHandlerSpec.groovy

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,30 @@ class BuildEventHandlerSpec extends Specification implements RetrofitStubs {
290290
outputTrigger.properties.equals(PROPERTIES)
291291
}
292292

293+
def "fetches fetches property file if defined with job name from query when flag is true"() {
294+
given:
295+
def mockProperties = PROPERTIES
296+
def trigger = enabledJenkinsTrigger.withMaster(MASTER_NAME).withBuildNumber(BUILD_NUMBER).withPropertyFile(PROPERTY_FILE)
297+
createPipelineWith(enabledJenkinsTrigger).withTrigger(trigger)
298+
def event = getBuildEvent()
299+
300+
def retrySupport = new RetrySupport()
301+
def configProperties = new IgorConfigurationProperties(jobNameAsQueryParameter: true)
302+
def buildInfoService = new BuildInfoService(igorService, retrySupport, configProperties)
303+
304+
def permissionEvaluator = fiatPermissionEvaluator
305+
def buildEventHandler = new BuildEventHandler(registry, objectMapper, Optional.of(buildInfoService), permissionEvaluator)
306+
307+
when:
308+
def outputTrigger = buildEventHandler.buildTrigger(event).apply(trigger)
309+
310+
then:
311+
1 * igorService.getBuildStatusWithJobQueryParameter(BUILD_NUMBER, MASTER_NAME, JOB_NAME) >> BUILD_INFO
312+
1 * igorService.getPropertyFileWithJobQueryParameter(BUILD_NUMBER, PROPERTY_FILE, MASTER_NAME, JOB_NAME) >> mockProperties
313+
outputTrigger.buildInfo == BUILD_INFO
314+
outputTrigger.properties == mockProperties
315+
}
316+
293317
def "checks constraints on property file if defined"() {
294318
given:
295319
def trigger = enabledJenkinsTrigger

0 commit comments

Comments
 (0)