使用CURL / HTTP POST参数构建Jenkins作业


Build Jenkins job with parameters from CURL / HTTP POST

我正在做一个AJAX请求来调用PHP(preferably) or similar文件,并希望该代码到trigger jenkins job remotely。此外,我想通过parameters的工作,将被触发。例如,与AJAX请求一起,我的data将保存一些变量的值,如job name、runid等,如下所示:

$.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

 <?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"}]}'
?>

其中runid是var,我将在我的AJAX请求代码和trserver-git是詹金斯作业的名称。

,它遵循实际URL中的语法:

语法来自上面的url

curl -X POST JENKINS_URL/job/JOB_NAME/build '
  --data token=TOKEN '
  --data-urlencode json='{"parameter": [{"name":"id", "value":"123"}, {"name":"verbosity", "value":"high"}]}'
?>

其中token是我从Jenkins的属性中获得的用户API令牌。

然而,这段代码(runjob.php)似乎不起作用,I am not able to trigger jobs and hence no parameters

稍后,一旦我能够触发带有传递参数的作业,I want to read those parameters to a shell scipt that runs as a part of jenkins job.例如,

./runTest.sh -Drunid=$id -Dprofile=$profile like maven参数。

是否有一个关于如何实现这个远程参数化jenkins作业触发和读取参数场景的好例子?PHP preferred .

这是我的解决方案,这对我来说很有效:

$url = "http://build:f9280f75396f83a0@mobile-jenkins.domain.com: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);