python-jenkins构建(build_job)无法传输Filesystem object type类型参数记录

Python-Jenkins官网:https://pypi.python.org/pypi/python-jenkins/

Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html

最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作。在Jenkins官网上找到了Python-Jenkins API,仔细阅读后发现,它几乎涵盖了大部分Jenkins的操作,大大方便了我们在后台进行对Jenkins的一些列操作。但是在构建任务的时候碰到了无法传递部分参数的情况,具体问题如下:

 

 参数类型为Filesystem object type的script参数无法传输导致构建失败:

发现构建失败,缺少script参数

 代码如下:

# -*- coding:utf-8 -*-
import jenkins

# 定义远程的jenkins master serve的url,port,username,password
jenkins_server_url = "http://172.17.43.16:8080"
username = "yuanxihui"
password = 'Pcfvumjn"y`zw*#/;fEy'
# 实例化jenkins对象,连接远程的jenkins master serve
server = jenkins.Jenkins(jenkins_server_url, username=username, password=password)

param_dict = {
    "script": "client-interface.jmx",
    "threads": "1",
    "loop": "1",
    "rampup": "1",
    "username": "**",
    "password": "**",
    "host": "**.**.**.**",
    "port": "8989"
}
url = server.build_job("performance-testing-jmeter", parameters=param_dict)
python-jenkins

运行构建后缺少script参数。

然后,直接使用requests库查看前端发送的接口,直接通过接口访问,参数传递成功

import requests

# 登录jenkins的用户名和密码
username = "****"
password = '****'
session = requests.Session()
login_data = {
    "j_username": username,
    "j_password": password ,
    "from": "/",
    "Submit": "登录"
}
login_resp = session.post(url="http://ip:8080/j_acegi_security_check", data=login_data)
print(login_resp.status_code)
crumb_resp = session.get(url="http://ip:8080/crumbIssuer/api/json")
crumb_resp_dict = crumb_resp.json()
crumb = crumb_resp_dict['crumb']
print(crumb)
build_data = {
    "script": "client-interface.jmx",
    "threads": "1",
    "loop": "1",
    "rampup": "1", 
    "username": "***",
    "password": "**",
    "host": "ip.35",
    "port": "8989",
    "statusCode": "303",
    "redirectTo": ".",
    "Jenkins-Crumb": crumb,
    "json": '{"parameter": [{"name": "script", "value": "client-interface.jmx"}, {"name": "threads", "value": "1"}, {"name": "loop", "value": "1"}, {"name": "rampup", "value": "1"}, {"name": "username", "value": "***"}, {"name": "password", "value": "***"}, {"name": "host", "value": "**.**.**.**"}, {"name": "port", "value": "8989"}], "statusCode": "303", "redirectTo": ".", "Jenkins-Crumb": '+crumb+'}',
    "Submit": "开始构建"
}
build_resp = session.post(url="http://ip:8080/job/performance-testing-jmeter/build", data=build_data)
print(build_resp.status_code)
session.close()
requests

 

原文地址:https://www.cnblogs.com/smartsmile-yxh/p/13983594.html