Python-jenkins模块之jobs相关操作

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值