Skip to content
This repository was archived by the owner on Nov 7, 2023. It is now read-only.

Commit d544e32

Browse files
committed
1 parent 5d64575 commit d544e32

File tree

2 files changed

+62
-5
lines changed

2 files changed

+62
-5
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
#2.1.2 (March 29th, 2014)
1+
#2.1.2 (April 6th, 2014)
22
###Bug fixes:
33
- fixing [JENKINS-22325](https://issues.jenkins-ci.org/browse/JENKINS-22325) - local job fails when not sending any parameters to remote job
44
- fixing [JENKINS-21470](https://issues.jenkins-ci.org/browse/JENKINS-21470) - UI does not display that a build is using a file to get the parameter list
5+
- fixing [JENKINS-22493](https://issues.jenkins-ci.org/browse/JENKINS-22493) - 400 when remote job has default parameters and parameters are not explicitly list them.
56

67
#2.1 (Feb 17th, 2014)
78
###New Feature/Enhancement:

src/main/java/org/jenkinsci/plugins/ParameterizedRemoteTrigger/RemoteBuildConfiguration.java

Lines changed: 60 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -368,21 +368,21 @@ private void addToQueryString(String item) {
368368
* Parameters for the remote job
369369
* @return fully formed, fully qualified remote trigger URL
370370
*/
371-
private String buildTriggerUrl(String job, String securityToken, Collection<String> params) {
371+
private String buildTriggerUrl(String job, String securityToken, Collection<String> params, boolean isRemoteJobParameterized) {
372372
RemoteJenkinsServer remoteServer = this.findRemoteHost(this.getRemoteJenkinsName());
373373
String triggerUrlString = remoteServer.getAddress().toString();
374374

375375
// start building the proper URL based on known capabiltiies of the remote server
376376
if (remoteServer.getHasBuildTokenRootSupport()) {
377377
triggerUrlString += buildTokenRootUrl;
378-
triggerUrlString += getBuildTypeUrl();
378+
triggerUrlString += getBuildTypeUrl(isRemoteJobParameterized);
379379

380380
this.addToQueryString("job=" + this.encodeValue(job));
381381

382382
} else {
383383
triggerUrlString += "/job/";
384384
triggerUrlString += this.encodeValue(job);
385-
triggerUrlString += getBuildTypeUrl();
385+
triggerUrlString += getBuildTypeUrl(isRemoteJobParameterized);
386386
}
387387

388388
// don't try to include a security token in the URL if none is provided
@@ -479,7 +479,8 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListener lis
479479

480480
String securityToken = replaceToken(build, listener, this.getToken());
481481

482-
String triggerUrlString = this.buildTriggerUrl(jobName, securityToken, cleanedParams);
482+
boolean isRemoteParameterized = isRemoteJobParameterized(jobName, build, listener);
483+
String triggerUrlString = this.buildTriggerUrl(jobName, securityToken, cleanedParams, isRemoteParameterized);
483484

484485
// Trigger remote job
485486
// print out some debugging information to the console
@@ -795,6 +796,10 @@ public String getParameterFile() {
795796
return this.parameterFile;
796797
}
797798

799+
/**
800+
* Based on the number of parameters set (and only on params set), returns the proper URL string
801+
* @return A string which represents a portion of the build URL
802+
*/
798803
private String getBuildTypeUrl() {
799804
boolean isParameterized = (this.getParameters().length() > 0);
800805

@@ -804,6 +809,57 @@ private String getBuildTypeUrl() {
804809
return RemoteBuildConfiguration.normalBuildUrl;
805810
}
806811
}
812+
813+
/**
814+
* Same as above, but takes in to consideration if the remote server has any default parameters set or not
815+
* @param isRemoteJobParameterized Boolean indicating if the remote job is parameterized or not
816+
* @return A string which represents a portion of the build URL
817+
*/
818+
private String getBuildTypeUrl(boolean isRemoteJobParameterized) {
819+
boolean isParameterized = false;
820+
821+
if(isRemoteJobParameterized || (this.getParameters().length() > 0)) {
822+
isParameterized = true;
823+
}
824+
825+
if (isParameterized) {
826+
return RemoteBuildConfiguration.paramerizedBuildUrl;
827+
} else {
828+
return RemoteBuildConfiguration.normalBuildUrl;
829+
}
830+
}
831+
832+
/**
833+
* Pokes the remote server to see if it has default parameters defined or not.
834+
*
835+
* @param jobName Name of the remote job to test
836+
* @param build Build object
837+
* @param listener listner object
838+
* @return true if the remote job has default parameters set, otherwise false
839+
*/
840+
private boolean isRemoteJobParameterized(String jobName, AbstractBuild build, BuildListener listener) {
841+
boolean isParameterized = false;
842+
843+
//build the proper URL to inspect the remote job
844+
RemoteJenkinsServer remoteServer = this.findRemoteHost(this.getRemoteJenkinsName());
845+
String remoteServerUrl = remoteServer.getAddress().toString();
846+
remoteServerUrl += "/job/" + jobName;
847+
remoteServerUrl += "/api/json";
848+
849+
try {
850+
JSONObject response = sendHTTPCall(remoteServerUrl, "GET", build, listener);
851+
852+
if(response.getJSONArray("actions").size() >= 1){
853+
isParameterized = true;
854+
}
855+
856+
} catch (IOException e) {
857+
// TODO Auto-generated catch block
858+
e.printStackTrace();
859+
}
860+
861+
return isParameterized;
862+
}
807863

808864
public boolean getOverrideAuth() {
809865
return this.overrideAuth;

0 commit comments

Comments
 (0)