本文共 2865 字,大约阅读时间需要 9 分钟。
实例演示了如何使用默认模板创建目录,在目录里面创建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)>>> server.copy_job('version/empty','version/empty_2')>>> server.delete_job('version') false true false false false
可以在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/18import sysimport jenkinsdef 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列表,然后加一个循环来调用此脚本就能实现批量创建任务。
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 viewjobs = 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指新增项目时页面任务类型,如下图的流水线、文件夹等。参考资料链接:
转载地址:http://zuiti.baihongyu.com/