【问题标题】:Build Jenkins job with parameters from CURL / HTTP POST使用来自 CURL / HTTP POST 的参数构建 Jenkins 作业
【发布时间】:2016-10-28 17:39:09
【问题描述】:

我正在发出 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 请求代码中的变量,trserver-git 是 jenkins 作业的名称。

遵循实际 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 参数。

有没有一个很好的例子来说明如何实现这个远程参数化詹金斯作业触发和读取参数场景? PHP preferred.

【问题讨论】:

  • “似乎不起作用”不是一个好的错误描述
  • 我的脚本说无法触发远程 jenkins 作业 - 这是我的 AJAX 请求中的自定义消息。
  • curl 调用会发出什么?
  • 所以,它说得够多了,不是吗?

标签: php maven curl jenkins jenkins-plugins


【解决方案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);    

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2023-04-07
    相关资源
    最近更新 更多