文章目录

  • ​​一、准备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 jenkins
from xml.dom.minidom import parse

jenkins_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_TYPE
param_define=doc.getElementsByTagName("parameterDefinitions")[0] # 获取第一个parameterDefinitions元素
new_str_param=doc.createElement("hudson.model.StringParameterDefinition") # 创建元素:hudson.model.StringParameterDefinition
param_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_TYPE
param_define=doc.getElementsByTagName("parameterDefinitions")[0] # 获取第一个parameterDefinitions元素
new_str_param=doc.createElement("hudson.model.StringParameterDefinition") # 创建元素:hudson.model.StringParameterDefinition
param_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文件会增加如下内容:

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

创建的jenkins项目test1

python处理Jenkins Job配置文件config.xml_往xml文件增加元素_02

三、增加extendedChoice复选框参数

Jenkins需要安装插件:Extended Choice Parameter

代码

# 创建第一个复选框参数:SKIP_GIT_PRODUCT
param_define=doc.getElementsByTagName("parameterDefinitions")[0] # 获取第一个parameterDefinitions元素
new_str_param=doc.createElement('com.cwctravel.hudson.plugins.extended__choice__parameter.ExtendedChoiceParameterDefinition') # 创建元素:hudson.model.StringParameterDefinition
new_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") # 界面展示选项行数,默认为5
new_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会增加如下内容

python处理Jenkins Job配置文件config.xml_python增加字符串参数_03

创建的jenkins项目

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

参考文章

​​Python处理XML文件​​