1 jobs创建
1.1 使用python jenkins默认模板创建jobs
实例演示了如何使用默认模板创建目录,在目录里面创建jobs,获取jobs配置以及如何删除目录及目录里面的jobs
>>> import jenkins
>>> server = jenkins.Jenkins('http://192.168.37.133:8081', username='sudley', password='******')
>>> server.create_job('version', jenkins.EMPTY_FOLDER_XML)
>>> server.create_job('version/empty', jenkins.EMPTY_CONFIG_XML)
>>> jobs = server.get_jobs()
>>> print(jobs)
[{'_class': 'com.cloudbees.hudson.plugins.folder.Folder', 'name': 'version', 'url': 'http://192.168.37.133:8081/job/version/', 'jobs': [{'_class': 'hudson.model.FreeStyleProject', 'name': 'empty', 'url': 'http://192.168.37.133:8081/job/version/job/empty/', 'color': 'notbuilt'}], 'fullname': 'version'}]
>>> print (jobs[0]['fullname'])
version
>>> my_job = server.get_job_config('version/empty')
>>> print(my_job)
<?xml version="1.0" encoding="UTF-8"?><project>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="jenkins.scm.NullSCM"/>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
<triggers class="vector"/>
<concurrentBuild>false</concurrentBuild>
<builders/>
<publishers/>
<buildWrappers/>
</project>
>>> server.copy_job('version/empty','version/empty_2')
>>> server.delete_job('version')
1.2 批量创建jenkins任务
可以在jenkins页面上面先配置一个template模板工程,然后在工程的基础上面实现批量创建jobs的工作
比如创建命令为:
python3 create_jobs.py 2019.12.18 SDL2019-XL
create_jobs.py:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: Sudley
# ctime: 2019/12/18
import sys
import jenkins
def create_jobs(version,product):
username = 'sudley'
password='******'
server = jenkins.Jenkins('http://%s:%s@192.168.37.133:8081', username, password)
template_job = server.get_job_config('2019/template')
new_job = template_job.replace('VERSION',version).replace('PRODUCT',product)
try:
server.create_job('2019/new_job', new_job)
except jenkins.JenkinsException as e:
print(e)
print ('delete the job 2019/new_job')
server.delete_job('2019/new_job')
if __name__ == '__main__' :
version = sys.argv[1]
product = sys.argv[2]
create_jobs(version,product)
现在只需要有提供一个version,product列表,然后加一个循环来调用此脚本就能实现批量创建任务。
1.3 jobs配置、构建及信息获取
server.get_job_config('version/empty')
server.build_job('empty')
server.disable_job('empty')
server.copy_job('empty', 'empty_copy')
server.rename_job('testjobs','testjobs2')
server.enable_job('empty_copy')
server.reconfig_job('empty_copy', jenkins.RECONFIG_XML)
# build a parameterized job
# requires creating and configuring the api-test job to accept 'param1' & 'param2'
server.build_job('api-test', {'param1': 'test value 1', 'param2': 'test value 2'})
last_build_number = server.get_job_info('api-test')['lastCompletedBuild']['number']
build_info = server.get_build_info('api-test', last_build_number)
# get all jobs from the specific view
jobs = server.get_jobs(view_name='View Name')
print (jobs)
# get jobs from the folder(folder name is '2019')
jobs = server.get_jobs()
jobs_2019 = jobs[0]['jobs']
jobs_num_2019 = len(jobs_2019)
print(jobs_2019[0]['name'])
备注:
上面的jobs指新增项目时页面任务类型,如下图的流水线、文件夹等。
参考资料链接:
https://python-jenkins.readthedocs.io/en/latest/examples.html