美文网首页
python批量修改jenkins的job配置

python批量修改jenkins的job配置

作者: 逐风细雨 | 来源:发表于2023-03-01 10:26 被阅读0次

  项目中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} 跳过修改")

相关文章

网友评论

      本文标题:python批量修改jenkins的job配置

      本文链接:https://www.haomeiwen.com/subject/fwvrldtx.html