如何使用curl更新Jenkins Job config.xml文件

时间:2018-04-20 20:37:09

标签: jenkins

如何通过使用curl更新jenkins作业的config.xml来编辑jenkins作业的参数?

3 个答案:

答案 0 :(得分:1)

您可以使用:

curl -X POST 'http://my-cool-jenkins.com:8080/createItem?name=mycooljob' -u username:password --data-binary @config.xml -H "Content-Type:text/xml"

<强>更新

创建工作的网址,用于更新用途:

curl -X POST 'http://my-cool-jenkins.com:8080/job/mycooljob/config.xml' -u username:password --data-binary @config.xml -H "Content-Type:text/xml"

答案 1 :(得分:1)

仅更新config.xml文件的内容可能不足以更改Jenkins作业的内存状态。您仍然需要从磁盘重新加载配置,这可以在GUI中使用jenkins / manage /,using groovy script或只是重新启动服务器来完成。之后,你的例子应该有效。

这实际上归结为Jenkins config.xml是XStream序列化的java对象,而不是实际的配置文件。因此,通过手动编辑xml文件来更改作业参数可能不是最佳解决方案。相反,您可以使用Jenkins脚本控制台更改作业配置。例如,要更改String参数的默认参数值,您可以在Jenkins控制台中运行以下脚本(例如 http://localhost:8080/jenkins/script):

import hudson.model.ParametersDefinitionProperty

def jobName = "job_name"
def paramName = "param_to_be_changed"
def newParamValue = "param_new_value"

def job = Jenkins.instance.getItem(jobName)
def params = job.getAction(ParametersDefinitionProperty)

def paramToModify = params.getParameterDefinitions().find { param -> param.getName() == paramName }    

paramToModify.setDefaultValue(newParamValue)

job.save()

如果作业在文件夹或组织内,则必须进一步,

def folderName = "folder_name"
def job = Jenkins.instance.getItem(folderName).getItem(jobName)

该作业状态将存储在config.xml文件中。之后,您可以使用curl远程执行脚本。假设您将上述脚本保存到script.groovy文件:

# Get breadcrumb from Jenkins
curl -u <username>:<password> 'http://localhost:8080/jenkins/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
# Send script to Jenkins console
curl -X POST -u <username>:<password> -H 'Jenkins-Crumb: <crumb>' -H 'Content: text/plain' --data-urlencode "script=$(< script.groovy)"  http://localhost:8080/jenkins/scriptText

javadoc

中有关参数API的更多详细信息

答案 2 :(得分:0)