当前位置:网站首页>Jenkins export and import Job Pipeline
Jenkins export and import Job Pipeline
2022-08-04 04:14:00 【LeoHsiao1】
Jenkins Web page can be manually modify Job Pipeline 配置 ,But large quantities when a change is more troublesome.There are several kinds of batch modification method:
- 到 jenkins_home 安装目录下,执行 zip -r jobs.zip jobs/*/config.xml
,可以导出 Job 配置文件.不过修改了之后,需要重启 Jenkins 才会生效.
- 通过 Jenkins API 导出、导入 Job 配置文件.
In this paper, we give the second method Python 示例代码:
""" - The script is used for export、导入 Jenkins 的 Pipeline 脚本,保存为 XML 文件 - 需要安装 pip install jenkinsapi - Import the configuration file contains the 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 Has been created Job
# jk.create_job(job_name, config)
# 执行导出、导入
export_job('test.*')
import_job('test.*')
边栏推荐
- Deep learning -- CNN clothing image classification, for example, discussed how to evaluate neural network model
- 技术解析|如何将 Pulsar 数据快速且无缝接入 Apache Doris
- Simple operation of the file system
- MySQL Query Exercise (1)
- if,case,for,while
- 张量篇-应用案例
- 7-1 LVS+NAT load balancing cluster, NAT mode deployment
- SVM介绍以及实战
- FPGA parsing B code----serial 3
- 7-1 LVS+NAT 负载均衡群集,NAT模式部署
猜你喜欢
How to systematically plan and learn software testing?
8.Haproxy 搭建Web集群
RSS订阅微信公众号初探-feed43
2022 Hangzhou Electric Power Multi-School League Game 5 Solution
drools from download to postman request success
函数,递归以及dom简单操作
Y86. Chapter iv Prometheus giant monitoring system and the actual combat, Prometheus storage (17)
如何简化现代电子采购的自动化?
[Medical Insurance Science] To maintain the safety of medical insurance funds, we can do this
用户与用户互发红包/支付宝C2C/B2C现金红包php源码示例/H5方式/兼容苹果/安卓
随机推荐
unity框架之缓存池
如何简化现代电子采购的自动化?
自定义通用分页标签01
"Introduction to nlp + actual combat: Chapter 8: Using Pytorch to realize handwritten digit recognition"
XSS相关知识点
【技巧】借助Sentinel实现请求的优先处理
杭电多校-Slipper-(树图转化+虚点建图)
[Ryerson emotional speaking/singing audiovisual dataset (RAVDESS)]
drools从下载到postman请求成功
哎,又跟HR在小群吵了一架!
机器学习之视频学习【更新】
Postgresql source code (66) insert on conflict grammar introduction and kernel execution process analysis
Stop behind.
帮助企业实现数字化转型成功的八项指导原则
Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析
JVM笔记
7-2 LVS+DR概述与部署
数据集类型转换—TFRecords文件
Tensors - Application Cases
Y86. Chapter iv Prometheus giant monitoring system and the actual combat, Prometheus storage (17)