如何通过使用curl更新jenkins作业的config.xml来编辑jenkins作业的参数?
答案 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
中有关参数API的更多详细信息
答案 2 :(得分:0)