我正在发出一个AJAX请求来调用PHP(preferably) or similar
文件,并希望将该代码发送到trigger jenkins job remotely
。另外,我想将parameters
传递给将被触发的工作。例如,与AJAX请求一起,我的data
将保留某些变量的值,例如job
名称,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
是我在AJAX请求代码中的var,trserver-git
是jenkins job的名称。
遵循实际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
喜欢maven参数。
是否有一个很好的例子来说明如何实现这个远程参数化jenkins作业触发和读取参数场景? PHP preferred
。
答案 0 :(得分:1)
这是我的解决方案,这对我有用:
$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);