python-jenkins文件对象传输

不带文件执行jenkins

# curl -X POST http://<-ip->:<-port->/job/<-job工作名->/build --user <-请求用户名->:<-token值-> --form json='{"parameter": [{"name": <-参数1的名字->, "value": <-参数1的值->}, {"name": <-参数2的名字->, "value":<-参数2的值->}]}'
param_dict = {
	<-参数1的名字->: <-参数1的值->,
	<-参数2的名字->: <-参数2的值->
}

# jenkins_server_url  格式---- http://ip:port/
# use_id  请求用户名
# api_token 请求token
server = jenkins.Jenkins(jenkins_server_url, username=use_id, password=api_token)

# str_change job工作名 
# param_dict form表单传的参数
server.build_job(str_change, parameters=param_dict, token=api_token)

带文件对象执行jenkins

# curl -X POST http://<-ip->:<-port->/job/<-job工作名->/build --user <-请求用户名->:<-token值-> --form json='{"parameter": [{"name": <-参数1的名字->, "value": <-参数1的值->}, {"name": <-参数2的名字->, "value":<-参数2的值->}, {"name":<-文件参数名字->, "file":<-给文件起的文字->}]}' --form <-给文件起的名字(不带引号)->=@<-文件的绝对路径->

# 待测试
import requests

payload = ( 
	('file0', open("FILE_LOCATION_ON_LOCAL_MACHINE", "rb")),
	('json', '{ "parameter": [
						{"name":"FILE_LOCATION_AS_SET_IN_JENKINS", "file":"file0" }...
						]}')
)

resp = requests.post("JENKINS_URL/job/JOB_NAME/build", 
                   auth=('username','password'), 
                   headers={"Jenkins-Crumb":"9e1cf46405223fb634323442a55f4412"}, 
                   files=payload )

直接使用系统执行curl语句

# 这里碰到了一个坑, 单引号里用双引号里面复用单引号或者双引号都报错, 解决方法使用format
param_dict = {
	<-参数1的名字->: <-参数1的值->,
	<-参数2的名字->: <-参数2的值->
}
str_post = 'curl -X POST {}job/{}/build --user {}:{} --form json="{}" --form file0=@{}'.format(jenkins_server_url, str_change, use_id, api_token, str(param_dict), <-文件的绝对路径->)
os.popen(str_post)

更多解决方法参照

发布了26 篇原创文章 · 获赞 2 · 访问量 1421

猜你喜欢

转载自blog.csdn.net/weixin_43633797/article/details/100990438