diff --git a/module/compile/model.php b/module/compile/model.php index f741271daa..462446a556 100644 --- a/module/compile/model.php +++ b/module/compile/model.php @@ -134,13 +134,18 @@ class compileModel extends model $url = new stdclass(); $url->userPWD = "$jenkinsUser:$jenkinsPassword"; + + $detailUrl = strpos($jenkins->pipeline, '/job/') !== false ? sprintf('%s%s/api/json', $jenkinsServer, $jenkins->pipeline) : sprintf('%s/job/%s/api/json', $jenkinsServer, $jenkins->pipeline); + $hasParameterizedBuild = $this->loadModel('job')->checkParameterizedBuild($detailUrl, $url->userPWD); + $buildInterface = $hasParameterizedBuild ? 'buildWithParameters' : 'build'; + if(strpos($jenkins->pipeline, '/job/') !== false) { - $url->url = sprintf('%s%sbuildWithParameters/api/json', $jenkinsServer, $jenkins->pipeline); + $url->url = sprintf("%s%s{$buildInterface}/api/json", $jenkinsServer, $jenkins->pipeline); } else { - $url->url = sprintf('%s/job/%s/buildWithParameters/api/json', $jenkinsServer, $jenkins->pipeline); + $url->url = sprintf("%s/job/%s/{$buildInterface}/api/json", $jenkinsServer, $jenkins->pipeline); } return $url; diff --git a/module/job/js/create.ui.js b/module/job/js/create.ui.js index f579efddc2..193cff2103 100644 --- a/module/job/js/create.ui.js +++ b/module/job/js/create.ui.js @@ -4,7 +4,7 @@ function changeEngine(event) if(engine == 'jenkins') { - $('.reference').removeClass('hidden'); + $('.reference').addClass('hidden'); } else { @@ -82,7 +82,7 @@ function changeRepo(event) if(data.type.indexOf('git') != -1) { var engine = $('[name=engine]').val(); - if(engine == 'jenkins') $('.reference').removeClass('hidden'); + //if(engine == 'jenkins') $('.reference').removeClass('hidden'); $('.reference').addClass('gitRepo'); $('.svn-fields').addClass('hidden'); diff --git a/module/job/js/edit.ui.js b/module/job/js/edit.ui.js index 21c4430322..3ded553541 100644 --- a/module/job/js/edit.ui.js +++ b/module/job/js/edit.ui.js @@ -75,7 +75,7 @@ function changeRepo(event) if(data.type.indexOf('git') != -1) { var engine = $('[name=engine]').val(); - if(engine == 'jenkins') $('.reference').removeClass('hidden'); + //if(engine == 'jenkins') $('.reference').removeClass('hidden'); $('.reference').addClass('gitRepo'); $('.svn-fields').addClass('hidden'); diff --git a/module/job/model.php b/module/job/model.php index a1e22a99c6..ebd4b46ee1 100644 --- a/module/job/model.php +++ b/module/job/model.php @@ -700,4 +700,19 @@ class jobModel extends model return true; } + + /** + * Check if jenkins has enabled parameterized build. + * + * @param string $url + * @param string $userPWD + * @access public + * @return bool + */ + public function checkParameterizedBuild($url, $userPWD) + { + $response = common::http($url, null, array(CURLOPT_HEADER => true, CURLOPT_USERPWD => $userPWD)); + + return strpos($response, 'hudson.model.ParametersDefinitionProperty') !== false; + } } diff --git a/module/job/ui/edit.html.php b/module/job/ui/edit.html.php index ab33b1c042..c7f92bdb33 100644 --- a/module/job/ui/edit.html.php +++ b/module/job/ui/edit.html.php @@ -135,7 +135,7 @@ formPanel ), formGroup ( - $job->engine == 'jenkins' ? setClass('reference') : setClass('reference hidden'), + $job->engine == 'jenkins' ? setClass('reference hidden') : setClass('reference hidden'), set::labelWidth('5em'), set::label($lang->job->branch), set::required(true),