文章目录
- 一、准备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文件会增加如下内容:
创建的jenkins项目test1
三、增加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会增加如下内容
创建的jenkins项目
参考文章
Python处理XML文件