如何通过带参数的Python脚本运行Jenkins作业

omhiaaxx  于 12个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(111)

有一个jenkins作业,用于通过单击build with parameters手动运行,然后添加所需的参数并单击build。现在我们希望使用python脚本自动触发此作业的参数。需要一个可以使用参数构建jenkins作业的python脚本
我们可以用requests来做吗?get in python?

tcomlyy6

tcomlyy61#

虽然您可以发现POST请求更适合用于构建触发,但您仍然可以使用GET请求来实现相同的目的。
首先,您需要将您的作业标记为可以由脚本触发的作业。您可以通过在“生成触发器”作业配置部分中勾选“远程触发器生成”复选框来完成此操作。此操作将强制您创建一个身份验证令牌,该令牌将用作URL的参数。
在此之后,您可以通过requests lib获取以下URL,以远程触发作业的构建:http://www.serverconfiguration/job/servermyjobconfiguration/buildWithParameters?token = TOKEN & PARAMETER = Value

SERVER-您的服务器地址
MYJOB-Jenkins作业的名称

因此,代码可能如下所示:

import requests

jenkins_url = 'http://your-jenkins-server'
job_name = 'your-job-name'

build_parameters = {
    'token': 'your_auth_token',
    'param1': 'value1',
    'param2': 'value2',
    # Add more parameters as needed
}

build_url = f'{jenkins_url}/job/{job_name}/buildWithParameters'
response = requests.get(build_url, params=build_parameters)

字符串
如果您自己构建parameters子句,那么请记住,所有参数都需要正确地进行URL转义,并且参数名称大小写非常重要。
查看更多详情here

!编辑

对于POST请求,代码可能如下所示:

import requests

jenkins_url = 'http://your-jenkins-server'
job_name = 'your-job-name'

build_parameters = {
    'token': 'your_auth_token',
    'param1': 'value1',
    'param2': 'value2'
    # Add more parameters as needed
}

build_url = f'{jenkins_url}/job/{job_name}/buildWithParameters'
response = requests.post(build_url, data=build_parameters)


所以区别在于内容类型,这使得POST请求更安全。
Jenkins可能会为POST请求返回HTTP 403,并出现以下错误:“Error 403 No valid crumb was included in the request”
在这种情况下,您必须将'Jenkins-Crumb'标头添加到您的请求中

headers = {
  'Jenkins-Crumb': 'your-crumb'
}

response = requests.post(build_url, data=build_parameters, headers=headers)


要获取crumb,您需要向http://SERVER/crumbIssuer/api/json URL发出GET请求,并存储JSON响应中的'crumb'键的值。

相关问题