1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python处理Jenkins Job配置文件config.xml

python处理Jenkins Job配置文件config.xml

时间:2021-09-27 05:47:03

相关推荐

python处理Jenkins Job配置文件config.xml

文章目录

一、准备config.xml文件二、增加字符串参数代码confix.xml文件会增加如下内容:创建的jenkins项目test1 三、删除字符串参数的某个属性四、替换字符串参数的某个元素的值四、增加extendedChoice复选框参数代码config.xml会增加如下内容创建的jenkins项目 参考文章

一、准备config.xml文件

<flow-definition plugin="workflow-job@1174.1176.va_29023983d67"><actions><org.jenkinsci.plugins.workflow.multibranch.JobPropertyTrackerAction plugin="workflow-multibranch@716.vc692a_e52371b_"><jobPropertyDescriptors><string>hudson.model.ParametersDefinitionProperty</string></jobPropertyDescriptors></org.jenkinsci.plugins.workflow.multibranch.JobPropertyTrackerAction></actions><description></description><keepDependencies>false</keepDependencies><properties><hudson.model.ParametersDefinitionProperty><parameterDefinitions></parameterDefinitions></hudson.model.ParametersDefinitionProperty></properties><definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workflow-cps@2660.2664.v4c114e93f4c1"><script></script><sandbox>true</sandbox></definition><triggers/><disabled>false</disabled></flow-definition>

二、增加字符串参数

代码

#!/usr/bin/env python# -*- coding:utf-8 -*-import jenkinsfrom xml.dom.minidom import parsejenkins_server_url = "http://192.168.1.4:6060/"username = "devops"token = "112f52051d1432cade5d555b5c595"server = jenkins.Jenkins(jenkins_server_url, username=username, password=token)print(server.get_version())# Jenkins版本doc = parse("./config.xml")# 创建第一个字符串参数:DB_TYPEparam_define=doc.getElementsByTagName("parameterDefinitions")[0] # 获取第一个parameterDefinitions元素new_str_param=doc.createElement("hudson.model.StringParameterDefinition") # 创建元素:hudson.model.StringParameterDefinitionparam_define.appendChild(new_str_param)# 追加元素str_param_define=doc.getElementsByTagName("hudson.model.StringParameterDefinition")[0]new_element=doc.createElement("name")new_element.appendChild(doc.createTextNode("DB_TYPE"))# 给元素增加文本str_param_define.appendChild(new_element)new_element=doc.createElement("description")new_element.appendChild(doc.createTextNode("数据库类型"))str_param_define.appendChild(new_element)# 创建第二个字符串参数:OS_TYPEparam_define=doc.getElementsByTagName("parameterDefinitions")[0] # 获取第一个parameterDefinitions元素new_str_param=doc.createElement("hudson.model.StringParameterDefinition") # 创建元素:hudson.model.StringParameterDefinitionparam_define.appendChild(new_str_param)# 追加元素str_param_define=doc.getElementsByTagName("hudson.model.StringParameterDefinition")[1]new_element=doc.createElement("name")new_element.appendChild(doc.createTextNode("OS_TYPE"))# 给元素增加文本str_param_define.appendChild(new_element)new_element=doc.createElement("description")new_element.appendChild(doc.createTextNode("操作系统类型"))str_param_define.appendChild(new_element)with open("config.xml", "w", encoding="utf-8") as f:doc.writexml(f, indent='\n', addindent='\t', newl='\n', encoding="utf-8")# 删除xml文件里面的空行with open("config.xml","r",encoding="utf-8") as xmlfile:lines = [line for line in xmlfile if line.strip() != ""]with open("config.xml", "w",encoding="utf-8") as xmlfile:xmlfile.writelines(lines)f = open('config.xml', 'r',encoding="utf-8")# 打开文件xml = f.read()# 读取文件内容f.close()server.create_job("test1",xml) # 创建Job

confix.xml文件会增加如下内容:

创建的jenkins项目test1

三、删除字符串参数的某个属性

例如:删除OS_TYPE的描述

str_param_define=doc.getElementsByTagName("hudson.model.StringParameterDefinition")[1]element_delete = doc.getElementsByTagName("description").item(0)str_param_define.removeChild(element_delete)

四、替换字符串参数的某个元素的值

例如:将OS_TYPE替换为STORAGE_TYPE

# 删除字符串参数的某个元素str_param_define=doc.getElementsByTagName("hudson.model.StringParameterDefinition")[1]element_delete = doc.getElementsByTagName("name").item(0)str_param_define.removeChild(element_delete)# 创建该元素str_param_define=doc.getElementsByTagName("hudson.model.StringParameterDefinition")[1]new_element=doc.createElement("name")new_element.appendChild(doc.createTextNode("STORAGE_TYPE"))# 给元素增加文本str_param_define.appendChild(new_element)

四、增加extendedChoice复选框参数

Jenkins需要安装插件:Extended Choice Parameter

代码

# 创建第一个复选框参数:SKIP_GIT_PRODUCTparam_define=doc.getElementsByTagName("parameterDefinitions")[0] # 获取第一个parameterDefinitions元素new_str_param=doc.createElement('com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition') # 创建元素:hudson.model.StringParameterDefinitionnew_str_param.setAttribute("plugin","extended-choice-parameter@346.vd87693c5a_86c")# 给元素增加属性param_define.appendChild(new_str_param)# 追加元素extend_choice_param_define=doc.getElementsByTagName('com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition')[0]new_element=doc.createElement("name")# 参数名字new_element.appendChild(doc.createTextNode("SKIP_GIT_PRODUCT"))# 给元素增加文本extend_choice_param_define.appendChild(new_element)new_element=doc.createElement("description")# 参数描述new_element.appendChild(doc.createTextNode("跳过指定的git工程"))extend_choice_param_define.appendChild(new_element)new_element=doc.createElement("visibleItemCount")# 界面展示选项行数,默认为5new_element.appendChild(doc.createTextNode("3"))extend_choice_param_define.appendChild(new_element)new_element=doc.createElement("type")# 类型为复选框new_element.appendChild(doc.createTextNode("PT_CHECKBOX"))extend_choice_param_define.appendChild(new_element)new_element=doc.createElement("value")# 可选值new_element.appendChild(doc.createTextNode("web,backend,db"))extend_choice_param_define.appendChild(new_element)new_element=doc.createElement("defaultValue")# 默认值new_element.appendChild(doc.createTextNode("web"))extend_choice_param_define.appendChild(new_element)new_element=doc.createElement("multiSelectDelimiter")# 指定分隔符new_element.appendChild(doc.createTextNode(","))extend_choice_param_define.appendChild(new_element)with open("config.xml", "w", encoding="utf-8") as f:doc.writexml(f, indent='\n', addindent='\t', newl='\n', encoding="utf-8")

config.xml会增加如下内容

创建的jenkins项目

参考文章

Python处理XML文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。