Build Jenkins job with parameters from CURL / HTTP POST
我正在发出AJAX请求来调用
1 2 3 4 5 6 7 | $.ajax({ url: 'runjob.php', type:"GET", data: { job : job, runid : id }, success: function(data) { .... } |
根据https://wiki.jenkins-ci.org/display/JENKINS/Remote access API,我在下面编写了一个小的PHP代码:
runjob.php
1 2 3 4 5 6 7 | <?php curl -X POST http://mobile-jenkins.testzynx.com:8080/job/trserver-git/build \\ --data token=12981209380192380129802 \\ --data-urlencode json='{"parameter": [{"name":"id","value":runid}, {"name":"profile","value":"tr-flex.properties"}]}' ?> |
其中
遵循实际URL中所示的语法:
网址上方的
语法
1 2 3 4 5 | curl -X POST JENKINS_URL/job/JOB_NAME/build \\ --data token=TOKEN \\ --data-urlencode json='{"parameter": [{"name":"id","value":"123"}, {"name":"verbosity","value":"high"}]}' ?> |
其中令牌是我从Jenkins的属性中获得的用户API令牌。
但是,此代码(
以后,一旦我能够使用传递的参数来触发作业,
关于如何实现此远程参数化jenkins作业触发器和读取参数方案,有一个很好的例子吗?
这是我的解决方案,对我有用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $url ="http://build:[email protected]:8080/job/android-test/buildWithParameters"; $data ="POST_RESULTS=true&RUN_ID=".$testrun_id."&CHECK_NAME=SampleAutomatedPlan"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // $output contains the output string $output = curl_exec($ch); // close curl resource to free up system resources curl_close($ch); |