python批量修改jenkins的job配置

??項(xiàng)目中jenkins服務(wù)器遷移后,有一個(gè)git的證書配置有問題,需要去掉,項(xiàng)目中的有1000個(gè)job如果一個(gè)個(gè)改的話,太費(fèi)時(shí)了,因此想到通過api的形式來實(shí)現(xiàn)。

#安裝依賴
pip install python-jenkins
# 安裝優(yōu)雅的日志庫,操作留痕總歸是合理的
pip install loguru 

job是根據(jù)名稱為唯一標(biāo)識(shí)的 如下圖 標(biāo)紅的就是job名稱:


image.png

??job配置返回是xml,根據(jù)項(xiàng)目情況 修改對(duì)應(yīng)的xml,這里采用的正則替換,當(dāng)然也可以按xml的方式遍歷修改,只是比較麻煩。
大體的處理邏輯:

  • 獲取所有的job
  • 遍歷job根據(jù)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配置 返回內(nèi)容為xml
    job_xml = server.get_job_config(job_name)

    # 正則替換指定的xml內(nèi)容
    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} 跳過修改")

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容