当前位置:网站首页>Jenkins 导出、导入 Job Pipeline
Jenkins 导出、导入 Job Pipeline
2022-08-04 04:01:00 【LeoHsiao1】
Jenkins 网页上可以手动修改 Job Pipeline 配置 ,但是大批量修改时比较麻烦。有几种批量修改的方法:
- 到 jenkins_home 安装目录下,执行 zip -r jobs.zip jobs/*/config.xml ,可以导出 Job 配置文件。不过修改了之后,需要重启 Jenkins 才会生效。
- 通过 Jenkins API 导出、导入 Job 配置文件。
本文给出第二种方法的 Python 示例代码:
""" - 该脚本用于导出、导入 Jenkins 的 Pipeline 脚本,保存为 XML 文件 - 需要安装 pip install jenkinsapi - 导入的配置文件包含非 ASCII 码时,需要修改 update_config() 的定义代码,注释 config = str(config) 一行 """
import os
import re
from jenkinsapi.jenkins import Jenkins
# 连接 Jenkins
jk = Jenkins('https://jenkins.test.com/', username='***', password='***', timeout=10, useCrumb=True)
config_suffix = '.xml'
def export_job(job_pattern='.*', work_dir='.'):
for job_name in jk.keys():
if not re.findall(job_pattern, job_name):
continue
config = jk.get_job(job_name).get_config()
config_file = os.path.normpath(os.path.join(work_dir, job_name + config_suffix))
os.makedirs(os.path.dirname(config_file), exist_ok=True)
with open(config_file, 'w', encoding='utf-8') as f:
f.write(config)
def import_job(job_pattern='.*', work_dir='.'):
for line in os.walk(work_dir, onerror=print):
sub_dir,dir_list,file_list = line
for file in file_list:
if file[-len(config_suffix):] != config_suffix:
continue
# 获取 job name
path_fileds = list(os.path.split(sub_dir)) + [file]
job_name = '/'.join(path_fileds).removeprefix(work_dir.replace('\\', '/')).removeprefix('/').removesuffix(config_suffix)
# 读取 job 的配置文件
if not re.findall(job_pattern, job_name):
continue
config_file = os.path.join(sub_dir, file)
with open(config_file, 'r', encoding='utf-8') as f:
config = f.read()
# 导入 job 配置
if jk.has_job(job_name):
jk.get_job(job_name).update_config(config.encode('utf-8'))
print('已导入Job:', job_name)
else:
print('Jenkins不存在该Job:', job_name)
# 自动创建 Job 会失败,目前只能导入 Jenkins 上已创建的 Job
# jk.create_job(job_name, config)
# 执行导出、导入
export_job('test.*')
import_job('test.*')
边栏推荐
- 力扣(LeetCode)215. 数组中的第K个最大元素(2022.08.03)
- Postgresql source code (66) insert on conflict grammar introduction and kernel execution process analysis
- 数据集类型转换—TFRecords文件
- SQL injection in #, - +, - % 20, % 23 is what mean?
- Basic form validation process
- JVM的内存模型简介
- sql语句查询String类型字段小于10的怎么查
- 【翻译】Terraform和Kubernetes的交集
- 一个属于程序员的七夕节!
- How to automatically export or capture abnormal login ip and logs in elastic to the database?
猜你喜欢

将xml标签转换为txt(voc格式转换为yolo方便进行训练)

拿捏JVM性能优化(自己笔记版本)

怎样提高网络数据安全性

基于Qt的目录统计QDirStat

Postgresql source code (66) insert on conflict grammar introduction and kernel execution process analysis

Eight guiding principles to help businesses achieve digital transformation success

如何简化现代电子采购的自动化?

Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析

new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解

if,case,for,while
随机推荐
将xml标签转换为txt(voc格式转换为yolo方便进行训练)
Hey, I had another fight with HR in the small group!
SQL query String field less than 10 how to check
Take care of JVM performance optimization (own note version)
Learn iframes and use them to solve cross-domain problems
数据集类型转换—TFRecords文件
外卖店优先级
Enterprise live broadcast is on the rise: Witnessing focused products, micro-like embracing ecology
【机器学习】21天挑战赛学习笔记(一)
企业直播风起:目睹聚焦产品,微赞拥抱生态
基于 SSE 实现服务端消息主动推送解决方案
创新互融|华秋赋能助力OpenHarmony生态硬件开发落地
马尔可夫链
【技巧】借助Sentinel实现请求的优先处理
千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机
张量篇-应用案例
内网服务器访问远程服务器的端口映射
【Ryerson情感说话/歌唱视听数据集(RAVDESS) 】
XSS相关知识点
mq应用场景介绍