从脚本启动Jenkins参数化构建

时间:2016-06-30 07:33:33

标签: python jenkins python-requests

我正在尝试从python脚本启动Jenkins参数化作业。由于环境要求,我无法安装python-jenkins。我正在使用原始请求模块。

我尝试启动的这项工作有三个参数:

  • string(让我们称之为有效载荷)
  • string(让我们称之为目标)
  • 文件(文件,可选)

我搜索并搜索,没有任何成功。

我设法通过启动以下两个字符串参数来启动作业:

import requests
url = "http://myjenkins/job/MyJobName/buildWithParameters"
target = "http://10.44.542.62:20000"
payload = "{payload: content}"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
msg = {
    'token': 'token',
    'payload': [ payload ],
    'target': [ target ],
}
r = requests.post(url, headers=headers, data=msg)

但是我无法在单个请求中发送文件和那些参数。

我尝试了requests.post个文件参数但失败了。

3 个答案:

答案 0 :(得分:1)

事实证明,通过HTTP在单个请求中发送数据和文件是不可能的。

答案 1 :(得分:0)

导入jenkinsapi 来自jenkinsHandler导入JenkinsHandler 在你的python脚本

将参数传递给buildJob(),(例如<您的JenkinsHandler对象名称> .buildJob()) JenkinsHandler模​​块具有init(),buildJob(),isRunning()等函数,有助于触发构建

答案 2 :(得分:0)

以下是一个例子:

curl -vvv -X POST http://127.0.0.1:8080/jenkins/job/jobname/build 
     --form file0='@/tmp/yourfile' 
     --form json='{"parameter": [{"name":"file", "file":"file0"}]}' 
     --form json='{"parameter": [{"name":"payload", "value":"123"}]
     --form json='{"parameter": [{"name":"target", "value":"456"}]}'