【问题标题】:Launch Jenkins parametrized build from script从脚本启动 Jenkins 参数化构建
【发布时间】:2016-06-30 07:33:32
【问题描述】:

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

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

  • 字符串(我们称之为payload)
  • 字符串(我们称之为目标)
  • 文件(一个文件,可选)

我找了又找,没有成功。

我设法通过启动使用两个字符串参数启动了该作业:

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

【问题讨论】:

    标签: python jenkins python-requests


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      导入 jenkinsapi 从 jenkinsHandler 导入 JenkinsHandler 在你的 python 脚本中

      将参数传递给 buildJob() ,(如 .buildJob()) JenkinsHandler 模块具有 init() 、 buildJob() 、 isRunning() 等函数,有助于触发构建

      【讨论】:

      • 是的,预计我不能使用 jenkins 库/包,最好是 requestsurllib,在 Windows 上的标准 Python 安装中可用
      【解决方案3】:

      这是一个例子:

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

      【讨论】:

      • 好的,那么现在如何在 Python 2 中将其与请求一起发送?
      猜你喜欢
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-12-30
      • 2012-11-01
      • 2016-10-07
      • 2015-08-28
      • 1970-01-01
      • 2018-12-19
      相关资源
      最近更新 更多