首页 > 编程语言 >python 构建jenkins job

python 构建jenkins job

时间:2024-05-08 17:13:18浏览次数:28  
标签:jobs last python server queue job build jenkins

学习文档:

https://www.cnblogs.com/hujinzhong/p/14593293.html

https://blog.csdn.net/qq_45939519/article/details/121052408

官方文档:

API 参考 — Python Jenkins 1.8.0 文档 (python-jenkins.readthedocs.io) 

使用 Python-Jenkins — Python Jenkins 1.8.0 文档

 

import requests
import jenkins
import time

# Jenkins 服务器的 URL
JENKINS_URL = "http://116.205.245.238:8081/"
# Jenkins 用户名和 密码
USERNAME = "lufeixiang"
PASSWORD = "lfx@2024"

# 列出你想构建的所有任务job,如果jobs为空,即jobs = [] 表示构建所有的job
jobs = ["som-storage-mgt"]

# 参数化构建,要构建的分支名称,只能针对所有的job
params = {"branch": "origin/uat"}

def action_build_jobs(server):

    # 所有的job信息
    all_jobs_li = server.get_all_jobs()

    # 开始时间
    start_time = time.time()

    # 构建job
    for item in all_jobs_li:
        # print('name: %s' % item['name'], 'URL: ', item['url'])
        if not jobs or item['name'] in jobs:
            server.build_job(item['name'],parameters=params)
            
    # 获取运营空间管理平台-生产者的视图的job
    # print(server.get_jobs(view_name='运营空间管理平台-生产者'))
    last_queue_job = []
    last_building_job = []
    while(True):
        queue_job = server.get_queue_info()
        building_job =  server.get_running_builds()
        if(queue_job and len(queue_job) != len(last_queue_job)):
            queue_job_nameList = []
            for job in queue_job:
                queue_job_nameList.append(job['task']['name'])
            print("等待队列中job: " + str(queue_job_nameList))
            
        if(building_job and building_job != last_building_job):
            building_job_nameList = []
            for job in building_job:
                building_job_nameList.append(job['name'])
            print("构建队列中job: " + str(building_job_nameList))
            
        if(not queue_job and not building_job):
            break
        last_queue_job = queue_job
        last_building_job = building_job
        time.sleep(1)

    # 结束时间
    end_time = time.time()
    duration = end_time - start_time

    # 打印耗时
    print("所有job构建完成,耗时: " + str(duration) + "s")

def is_last_build_successful(server, job_name):

    # 获取指定作业的最新构建信息
    last_build_info = server.get_job_info(job_name)

    # 检查是否有构建信息
    if last_build_info['lastCompletedBuild'] is not None:
        last_build_number = last_build_info['lastCompletedBuild']['number']
        
        # 获取最新构建的结果
        build_result = server.get_build_info(job_name, last_build_number)['result']
        
        # 如果结果为 'SUCCESS',则最新构建成功
        if build_result == 'SUCCESS':
            return True
        else:
            return False
    else:
        # 没有最近的构建信息,可能作业还没有构建过
        return False
        
if __name__ == "__main__":
    # 连接jenkins
    server = jenkins.Jenkins(JENKINS_URL, USERNAME, PASSWORD)
    # 构建job
    action_build_jobs(server)
    # 检查每个job最近一次构建是否成功
    if jobs:
        for job in jobs:
            success = is_last_build_successful(server, job)
            if not success:
                print(job + " 构建失败!")
    else:
        for job in server.get_all_jobs():
            success = is_last_build_successful(server, job)
            if not success:
                print(job + " 构建失败!")

 

标签:jobs,last,python,server,queue,job,build,jenkins
From: https://www.cnblogs.com/lfxx/p/18180259

相关文章

  • Python 将PDF转为PDF/A、PDF/X,以及PDF/A转回PDF
    PDF/A和PDF/X是两种有特定用途的PDF格式,具体查看以下:PDF/A是一种用于长期存档的PDF格式,它旨在确保文档的内容和格式在未来的访问中保持不变。如果您需要对文件进行长期存档,比如法律文件或档案记录,将其转换为PDF/A格式是一个明智的选择。PDF/X是一种用于印刷输出的PDF格式,它旨在......
  • Python中级之数据类型的内置方法1(数字类型和字符串)
    【一】数字类型【1】整数类型(int)(1)定义直接用整数定义,整数类型的值不能修改num=6(2)内置方法int.bit_length()#返回整数的二进制表示中最高位的位数,不包括符号和前导零。a=10b=a.bit_length()print(b)#输出4int.to_bytes(length,byteorder,signed)#......
  • Python安装教程手册(pip路径修改,建立模块搜索)
    下载官网64位exe安装包双击安装,一步步往下走    打开cmd命令行,输入Python-V查看安装版本号,检查是否安装成功  输入pip-V查看pip的版本号,检查是否安装成功  设置pip安装的全局库目录输入python-msite,查看当前默认配置的库目录找......
  • Python中级之数据类型的内置方法3(元祖、布尔、集合)
    【一】元祖类型(tuple)【1】定义元祖类型是有序且不可变的数据类型,通常使用小括号定义(也可以使用逗号)#用逗号定义num_tuple=1,2,3,4,5#用小括号定义num_tuple=(1,2,3,4,5)【2】内置方法(1)类型强转#使用tuple()函数将其他数据类型转换为元组类型num_list=......
  • Python中级之数据类型的内置方法2(字典和列表)
    【一】字符串类型的内置方法(熟悉)【1】查找(1)find方法#【1】默认从左到右开始查找,找得到则返回元素所在的索引位置name='ligo'str=name.find('i')print(str)#输出1#【2】也可在区间内寻找,找不到则返回-1str=name.find('g',3,4)print(str)#输出-1#【3】也......
  • Python中级之GC机制+字符编码+文件操作
    【一】深浅拷贝【1】深浅拷贝问题如果是浅拷贝,只会复制一层,如果拷贝的对象中有可变数据类型,修改可变数据类型还会影响拷贝的对象如果是深拷贝,完整复制,无论可变或不可变,都是创建出新的来,无法怎么修改原对象,都不会对拷贝出的对象造成影响(1)浅拷贝对于原对象中的可变数据类型......
  • Python中级之异常处理+推导式
    【一】异常处理【一】什么是异常异常是程序运行时可能发生的错误或意外情况当出现异常时,程序的正常流程会被中断,出现报错界面【二】异常分类在Python中异常分为内建异常和用户自定义异常【1】BaseException(所有异常的基类)SystemExit:解释器请求退出KeyboardInterru......
  • 使用Python的DataFrame和duckdb查询PG数据库
    直接使用以下脚本:importpsycopg2importduckdbimportpandasaspd#ConnecttoPostgreSQLconn_postgres=psycopg2.connect(dbname="pg_test_db",user="your_username",#Replacewithyourusernamepassword="your_password&qu......
  • Python基础之基本运算符
    【一】参考网站菜鸟教程:https://www.runoob.com/python/python-operators.html【二】算数运算符python支持的算数运算符与数学的运算符号是一样的#【1】加法运算符a=3b=4c=a+bprint(c)#输出7#【2】减法运算符a=3b=4c=a-bprint(c)#......
  • Python基础之流程控制语句
    【一】流程控制语句介绍程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句流程控制方式有顺序结构分支结构循环结构最简单最常用的就是顺序结构,执行方式是从上至下一句一句来【二】顺序结构【1】什么是顺序结构顺序结构是指按照代码书写的顺......