2016-06-30 34 views
1

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

这份工作,我尝试推出有三个参数:

  • 字符串(我们称之为有效载荷)
  • 字符串(我们称之为目标)
  • 文件(文件,可选)

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

我设法推出,推出带有两个字符串参数的任务:

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文件参数并失败。

回答

0

原来通过HTTP在单个请求中发送数据和文件是不可能的。

0
在你的Python脚本

进口jenkinsapi 从jenkinsHandler进口JenkinsHandler

参数传递给buildJob(),(如<你JenkinsHandler对象名称> .buildJob()) JenkinsHandler模​​块具有类似功能的init() buildJob(),isRunning(),这有助于在触发构建

+0

是的,我希望我不能使用jenkins库/包,最好是'请求'或'urllib',可用于Windows上的标准Python安装 –

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

好吧,现在我怎么能用Python 2中的请求发送它? –