需求:
我需要使用zadig一键实现,新项目自动化创建jenkins的pipeline内容.
问: 直接登录jenkins,然后复制不是也很快吗?
答:但是还是需要改很多pipeline的内容,直接使用脚本一键实现,因为前面还关联了很多任务,可以实现一键在k8s上创建所有的新项目全流程
python3代码:
import jenkins
import sys
from loguru import logger
logger.add("create_jenkins_job.log", rotation="100 MB")
server = jenkins.Jenkins('http://192.168.10.100:30002/', username='luozixu', password='sadmin')
def jenkins_wexml(sre_name_xiangmu):
try:
daochu_job = "k8s" + "-" + sre_name_xiangmu
xml_sdf = server.get_job_config(daochu_job)
with open('default.xml', 'w', encoding='utf-8') as f:
f.write(xml_sdf)
logger.debug("{}项目导出成功".format(daochu_job))
except:
daochu_job = "k8s" + "_" + sre_name_xiangmu
xml_sdf = server.get_job_config(daochu_job)
with open('default.xml', 'w', encoding='utf-8') as f:
f.write(xml_sdf)
logger.debug("{}项目导出成功".format(daochu_job))
def alter(file,old_str,new_str):
file_data = ""
with open(file, "r", encoding="utf-8") as f:
for line in f:
if old_str in line:
line = line.replace(old_str, new_str)
file_data += line
with open(file, "w", encoding="utf-8") as f:
f.write(file_data)
logger.debug("将{}----替换为---{}".format(old_str,new_str))
def create_job(des_name_xinamgu):
with open("default.xml",encoding='utf-8') as f:
sd = f.read()
c = sd.rstrip()
xin_name_job = "k8s" + "_" + des_name_xinamgu
server.create_job(xin_name_job, c)
logger.debug("jenkins创建项目--{}--成功,请查看".format(xin_name_job))
if __name__ == '__main__':
old_str = sys.argv[1]
new_str = sys.argv[2]
#导出jenkins模板
jenkins_wexml(old_str)
#修改文件内容
alter("default.xml",old_str,new_str)
#创建项目
create_job(new_str)
执行结果;
打包新的镜像,推送到镜像仓库,zadig配置这个镜像地址。
zadig工作流程配置自动化生成:
下班。。。