Jenkins想要传文件参数,应该创建自由风格的Job,流水线(Pipeline)是传不了文件参数的
备注:(我也只使用了这两个Job,Jenkins其他任务我也不清楚)
使用 jenkinsapi这个库
pip install jenkinsapi
连接Jenkins
from jenkinsapi.jenkins import Jenkins
server = Jenkins(url, username=user, password=pwd)
然后你需要重载build_job这个函数,下面是原代码
def build_job(self, jobname, params=None):
"""
Invoke a build by job name
:param jobname: name of exist job, str
:param params: the job params, dict
:return: none
"""
self[jobname].invoke(build_params=params or {})
下面是重载后的代码,可以看一下 invoke的参数,里面有个files参数。
def build_job(self, jobname, params=None, files=None):
"""
Invoke a build by job name
:param jobname: name of exist job, str
:param params: the job params, dict
:return: none
"""
self[jobname].invoke(build_params=params or {},files=None)
with open('filepath','rb') as f:
server.build(jobname='job_name',params={},files={'file':f})
使用重载后的build_job就可以上传文件参数了