当前位置:网站首页>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.*')
边栏推荐
- Explain detailed explanation and practice
- [Medical Insurance Science] To maintain the safety of medical insurance funds, we can do this
- 打造一份优雅的简历
- 2.15 keil使用电脑端时间日期
- 【源码】使用深度学习训练一个游戏
- Stop behind.
- 用户与用户互发红包/支付宝C2C/B2C现金红包php源码示例/H5方式/兼容苹果/安卓
- The Shell function
- 2003. 每棵子树内缺失的最小基因值 DFS
- SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropri
猜你喜欢

千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机

学会iframe并用其解决跨域问题

Shell 函数

This Thursday evening at 19:00, the fourth live broadcast of knowledge empowerment丨The realization of equipment control of OpenHarmony smart home project

Functions, recursion and simple dom operations

Y86. Chapter iv Prometheus giant monitoring system and the actual combat, Prometheus storage (17)

用户与用户互发红包/支付宝C2C/B2C现金红包php源码示例/H5方式/兼容苹果/安卓

【源码】使用深度学习训练一个游戏

42. 接雨水

mysql索引笔记
随机推荐
高效IO模型
Deep learning -- CNN clothing image classification, for example, discussed how to evaluate neural network model
千兆2光8电管理型工业以太网交换机WEB管理X-Ring一键环网交换机
Explain detailed explanation and practice
基地址:环境变量
SQL interview Questions
The video of machine learning to learn [update]
Stop behind.
Introduction to the memory model of the JVM
2003. 每棵子树内缺失的最小基因值 DFS
Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析
7-2 LVS+DR概述与部署
Basic characteristics of TL431 and oscillator circuit
汇编语言之栈
7. The principle description of LVS load balancing cluster
Senior PHP development case (1) : use MYSQL statement across the table query cannot export all records of the solution
技术解析|如何将 Pulsar 数据快速且无缝接入 Apache Doris
mysql索引笔记
4路双向HDMI综合业务高清视频光端机8路HDMI高清视频光端机
Functions, recursion and simple dom operations