文章目录

  • ​​一、要求​​
  • ​​二、pipeline模板xml的内容可以通过如下方式获取​​
  • ​​三、代码​​
  • ​​四、效果​​
  • ​​五、参考文章​​

一、要求

将hudson.model.StringParameterDefinition的参数名从DB_TYPE改为OS_TYPE,并创建名字为​​test1​​的Job

二、pipeline模板xml的内容可以通过如下方式获取

​http://Jenkins地址/job/job名/config.xml​python创建config.xml文件,调用Jenkins API接口创建带参数的Job_xml

三、代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import jenkins
from xml.etree import ElementTree as ET

jenkins_server_url = "http://192.168.1.2:6060/"
username = "admin"
token = "112f52051d1432cade5d555b5c595a"

server = jenkins.Jenkins(jenkins_server_url, username=username, password=token)
print(server.get_version()) # Jenkins版本

# pipeline模板
pipeline_template = """
<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>
<hudson.model.StringParameterDefinition>
<name>DB_TYPE</name>
<trim>true</trim>
</hudson.model.StringParameterDefinition>
</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>
"""
xml_root = ET.XML(pipeline_template) # 获取文件根标签

str_param_object = xml_root.find("properties").find("hudson.model.ParametersDefinitionProperty").find("parameterDefinitions").iter("hudson.model.StringParameterDefinition") # 获取字符串参数标签
for str_param_cell in str_param_object:
str_param_cell.find("name").text = "OS_TYPE" # 修改<name></name>之间的值
tree = ET.ElementTree(xml_root)
tree.write("config.xml", encoding="utf-8",short_empty_elements=True) # 如果文件不存在,则创建文件,如果文件已存在则修改相应内容

f = open('config.xml', 'r') # 打开文件
xml = f.read() # 读取文件内容
f.close()
server.create_job("test1",xml)

四、效果

python创建config.xml文件,调用Jenkins API接口创建带参数的Job_python处理xml文件_02

五、参考文章

​python 操作xml的方式介绍​​​​使用Python操作Jenkins(创建,构建,获取Job日志和报告)​