首页 > 编程语言 >python 修改jenkins的配置文件

python 修改jenkins的配置文件

时间:2024-04-19 17:44:35浏览次数:24  
标签:name 配置文件 python confogure job jenkins data

python有jenkins获取配置文件的api,也有修改配置文件的api,

下面介绍下 如果修改jenkins job的配置文件内容:

import re
import time
import jenkins

jenkins_url="http://xxx.com/jenkins"
username="zhangsan"
token="1.......de"

jenkins = jenkins.Jenkins(jenkins_url,username,token)
#添加 旧构建记录默认配置
daysToKeep = "20"
numToKeep = "10"
str = '<properties>\n' + \
      '<jenkins.model.BuildDiscarderProperty>\n' + \
      '<strategy class="hudson.tasks.LogRotator">\n' + \
      '<daysToKeep>'+daysToKeep+'</daysToKeep>\n' + \
      '<numToKeep>'+numToKeep+'</numToKeep>\n' + \
      '<artifactDaysToKeep>-1</artifactDaysToKeep>\n' + \
      '<artifactNumToKeep>-1</artifactNumToKeep>\n' + \
      '</strategy>\n' + \
      '</jenkins.model.BuildDiscarderProperty>'
# 获取jenkins中所有job的名字
all_jobs=jenkins.get_jobs()
for job in all_jobs:
    job_name = job["name"]
    job_confogure_data = jenkins.get_job_config(job_name)  # 获取job congifure info
    if job_confogure_data.find("jenkins.model.BuildDiscarderProperty") == -1:  # 如果这个job没有勾选 构建旧记录的配置策略
        job_confogure_data = re.sub("<properties>", str, job_confogure_data, 1)  # 需修改第一个<properties>
    else:
        job_confogure_data = re.sub("<daysToKeep>-?\d+</daysToKeep>", "<daysToKeep>" + daysToKeep + "</daysToKeep>",
                                    job_confogure_data)
        job_confogure_data = re.sub("<numToKeep>-?\d+</numToKeep>", "<numToKeep>" + numToKeep + "</numToKeep>",
                                    job_confogure_data)
        print(job_confogure_data)
    jenkins.reconfig_job(job_name, job_confogure_data)  # 修改job configure信息
    time.sleep(3)

因为jenkins的特性是:如果构建记录的保存几天 没有配置,那么值就是-1,具体可以通过jenkins job的config.xml查看:

http://xxx.com/jenkins/job/【jobName】/config.xml

 

 

所以需要用到一些正则表达式:

<daysToKeep>-?\d+</daysToKeep>
解释:
?:表示?前面的字符可以出现0到1次
-?\d+ :表示可以是负数,也可以为负数
\d+: 这样 就只能匹配到正数
 

标签:name,配置文件,python,confogure,job,jenkins,data
From: https://www.cnblogs.com/pingguomang/p/18146536

相关文章

  • python多继承构造方法参数报错
    各路大神,今天下午在学习Python3.12多继承的时候,有个构造方法一直报错,希望大家能帮忙瞅瞅,求求了~~~~~~~代码如下:点击查看代码classRectangle:def__init__(self,width,height):self.width=widthself.height=heightdefarea(self):......
  • python minio
    fromminioimportMiniofile_name='3e09ca66d9444906935b0171e26891f1.mp4'file_path=r'E:\集成资料\视频素材'barrel="testdata"defupload_file():#创建minio客户端client=Minio(endpoint="xxx.xxx.xxx.xxx:xxxxx"......
  • Effective Python:第8条 用zip函数同时遍历两个迭代器
    用Python内置的zip函数来实现。这个函数能把两个或更多的iterator封装成惰性生成器(lazygenerator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。names=["Cecilia","Lise","Marie"]counts=[len(n)forninnames]max_count=......
  • python tornado简易ws聊天室测试
    #-*-coding:utf-8-*-from__future__importunicode_literals,print_functionfromdatetimeimportdatetimeimporttornadofromtornado.optionsimportdefine,optionsfromtornado.websocketimportWebSocketHandler#设置服务器端口define("port",de......
  • python 获取文件夹下所有fbx文件的名字并保存到txt文件中
    代码:importosdefget_fbx_files_and_write_to_txt(folder_path,output_file_path):fbx_files=[]#遍历指定文件夹中的所有文件foriteminos.listdir(folder_path):item_path=os.path.join(folder_path,item)#检查是否为文件,并且......
  • 如何用Python构建一个生产级别的电影推荐系统 - 机器学习手册
    构建项目是彻底学习概念并发展必要技能的最有效方式之一。项目使您沉浸在现实世界的问题解决中,巩固您的知识,并培养批判性思维、适应能力和项目管理专业知识。本指南将带您逐步构建一个根据用户喜好量身定制的电影推荐系统。我们将利用一个庞大的包含10,000部电影的数据集作为......
  • 【百川大模型】RediSearch在python中的应用场景
    [本文出自天外归云的博客园]RediSearch是一个非常强大的全文搜索引擎,它可以与Python一起使用,为你的应用程序提供快速的搜索能力。以下是一些使用RediSearch的场景示例:场景一:商品搜索假设你正在开发一个电子商务网站,你需要为用户提供一个搜索框,让他们能够快速找到他们想要的商品......
  • 【小提示】指定Python版本以消除运行Ansible时显示的警告
    我正在编写Ansible手册来设置Mac。当我运行它时,我收到警告,所以我会调查它并分享我解决的问题。你好。我是AmazonWebServices团队的Sureing。最近,我的Mac键盘无法正常工作,我把它修好了。在此期间,将提供替换设备,但设置为默认设置。您可以手动更改设置,但让我们使用Ansible......
  • [转]AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署
    一.前言                          (Jenkins、Docker、Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色角色环境功能开发机Win10、Docker(LinuxOS)编码、调试发布机(与开发机共享)Win10......
  • python基础之-sys模块、os模块基本介绍(未完成)
    背景介绍在自动化脚本中,经常会用到类似:sys.argv[1]和os.getenv("id")两种方式进行传参,为了便于区分,鉴于自己的理解进行一定记录,后续将继续补充。基本介绍一、sys模块它的很多属性描述程序的执行环境,是python的基础模块。*sys.argv:实现从程序外部向程序传递参数。*sys.a......