python批量修改jenkins的job配置

  项目中jenkins服务器迁移后,有一个git的证书配置有问题,需要去掉,项目中的有1000个job如果一个个改的话,太费时了,因此想到通过api的形式来实现。

#安装依赖
pip install python-jenkins
# 安装优雅的日志库,操作留痕总归是合理的
pip install loguru 

job是根据名称为唯一标识的 如下图 标红的就是job名称:


image.png

  job配置返回是xml,根据项目情况 修改对应的xml,这里采用的正则替换,当然也可以按xml的方式遍历修改,只是比较麻烦。
大体的处理逻辑:

  • 获取所有的job
  • 遍历job根据job名称获取job的配置
  • 修改配置的xml 再将修改后的xml提交
    代码如下:
import re
import jenkins
from loguru import logger

logger.add("jenkins_opt.log")

jenkins_server_url = "http://xxxxx:8080/jenkins/"
username = "xxxx"
password = "xxxxx"

# 登录jenkins
server = jenkins.Jenkins(jenkins_server_url, username=username, password=password)
# 获取所有的job
jobs = server.get_all_jobs()

# 需要匹配的字段
pattern = re.compile("<credentialsId>.*</credentialsId>")
# 遍历job修改配置
for job in jobs:
    # 获取job名称
    job_name = job.get("name")
    # 获取job配置 返回内容为xml
    job_xml = server.get_job_config(job_name)

    # 正则替换指定的xml内容
    if re.search(pattern, job_xml):
        # 将字段替换为空
        job_xml = pattern.sub('', job_xml)
        try:
            # 提交job新的配置
            server.reconfig_job(job_name, job_xml)
            logger.info(f"修改成功:{job_name}")
        except Exception as e:
            logger.error(f"{job_name} 修改异常:{e}")
    else:
        logger.info(f"{job_name} 跳过修改")

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容