西安工程建设信息网站,网站网页开发公司,国际最著名建筑设计大奖,做摄影的网站知乎最近#xff0c;我想更新Cloudbees中的一些作业#xff08;未使用DSL定义#xff09;#xff0c;为每个作业添加一些属性。 好吧#xff0c;我在使其工作时遇到了一些麻烦#xff0c;这是我的注意事项#xff08;我使用的是Jenkins 1.651.2.1#xff0c;但有可能它应与… 最近我想更新Cloudbees中的一些作业未使用DSL定义为每个作业添加一些属性。 好吧我在使其工作时遇到了一些麻烦这是我的注意事项我使用的是Jenkins 1.651.2.1但有可能它应与较早和较新的版本一起使用例如jenkins 2 没有安全性/没有身份验证 这是简单的部分检索并重新发布配置 $ curl http://localhost:8080/jenkins/job/pof/config.xml -o config.xml
$ curl -X POST http://localhost:8080/jenkins/job/pof/config.xml --data-binary config.xml简单的安全性使用用户名和密码 我现在假设您的Jenkins设置已设置安全性 http// localhost8080 / jenkins / configureSecurity / –启用安全性 这意味着我们现在需要验证我们的两个请求 curl -X GET http://anthony:anthonylocalhost:8080/jenkins/job/pof/config.xml -o config.xml
curl -X POST http://anthony:anthonylocalhost:8080/jenkins/job/pof/config.xml --data-binary config.xml简单的安全性启用CSRF滚动 您还需要保护您的jenkins实例免受CSRF攻击 http// localhost8080 / jenkins / configureSecurity / – enable csrf crumb 现在这也意味着您的请求需要发送一个屑状值无论是作为参数还是通过标头 如果您不这样做 curl -X POST http://anthony:anthonylocalhost:8080/jenkins/job/pof/config.xml --data-binary config.xml 您会得到这样的错误 bodyh2HTTP ERROR 403/h2
pProblem accessing /jenkins/job/pof/config.xml. Reason:
pre No valid crumb was included in the request/pre/phr /ismallPowered by Jetty:///small/ibr/ 甚至 bodyh1HTTP Status 500 - /h1HR size1 noshadenoshadepbtype/b Exception report/ppbmessage/b u/u/ppbdescription/b uThe server encountered an internal error () that prevented it from fulfilling this request./u/ppbexception/b prejava.io.IOException: Failed to persist config.xml
hudson.model.AbstractItem.updateByXml(AbstractItem.java:677)
hudson.model.AbstractItem.doConfigDotXml(AbstractItem.java:617)
…..
/pre/ppbroot cause/b prejavax.xml.transform.TransformerException: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:755)
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:357)jenkins.util.xml.XMLUtils._transform(XMLUtils.java:96)jenkins.util.xml.XMLUtils.safeTransform(XMLUtils.java:63)hudson.model.AbstractItem.updateByXml(AbstractItem.java:674)hudson.model.AbstractItem.doConfigDotXml(AbstractItem.java:617)获得面包屑值 您可以使用configure job页面来分配值 curl http://anthony:anthonylocalhost:8080/jenkins/job/pof/configure | sed -n s/.*\.crumb, \(.*\)).*/\1/p crumb.txt 但是还有专门用于此的服务 curl http://anthony:anthonylocalhost:8080/jenkins/crumbIssuer/api/xml | sed -n s/.*\(.*\)\/crumb.*/\1/p crumb.txt使用面包屑值 curl -X POST http://anthony:anthonylocalhost:8080/jenkins/job/pof/config.xml --data-binary config.xml -data .crumb6bbabc426436b72ec35e5ad4a4344687 哎呀那没用 Caused by: java.lang.IllegalStateException: STREAMEDat org.eclipse.jetty.server.Request.getReader(Request.java:803)at javax.servlet.ServletRequestWrapper.getReader(ServletRequestWrapper.java:256)at hudson.model.AbstractItem.doConfigDotXml(AbstractItem.java:610) 我建议您使用标题发送面包屑 curl -v -X POST http://anthony:anthonylocalhost:8080/jenkins/job/pof/config.xml --data-binary config.xml -H .crumb: 6bbabc426436b72ec35e5ad4a4344687基于cookie的安全性无用户名/密码 在某些安装中例如cloubees您不能在请求中传递用户名和密码。 我建议您改用cookie。 要检索它们请检查通过身份验证的浏览器发送的cookie例如chrome 然后将此URL粘贴到您的shell中 curl http://localhost:8080/jenkins/job/pof/config.xml -H Pragma: no-cache -H Accept-Encoding: gzip, deflate, sdch -H Accept-Language: en-US,en;q0.8,fr;q0.6 -H Upgrade-Insecure-Requests: 1 -H User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 -H Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8 -H Referer: http://localhost:8080/jenkins/login?from%2Fjenkins%2Fjob%2Fpof%2Fconfig.xml -H Cookie: screenResolution1440x900; JSESSIONIDXXXXX; JSESSIONID.XXXXXX; screenResolution1440x900 -H Connection: keep-alive -H Cache-Control: no-cache --compressed 当然您仍然需要获取面包屑值 curl http://localhost:8080/jenkins/crumbIssuer/api/xml -H Pragma: no-cache -H Accept-Encoding: gzip, deflate, sdch -H Accept-Language: en-US,en;q0.8,fr;q0.6 -H Upgrade-Insecure-Requests: 1 -H User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 -H Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8 -H Referer: http://localhost:8080/jenkins/login?from%2Fjenkins%2Fjob%2Fpof%2Fconfig.xml -H Cookie: screenResolution1440x900; JSESSIONIDXXXXX; JSESSIONID.XXXXXXX; screenResolution1440x900 -H Connection: keep-alive -H Cache-Control: no-cache --compressed | sed -n s/.*crumb\(.*\)\/crumb.*/\1/p crumb.txt 现在您可以发布更新的config.xml了 curl -X POST http://localhost:8080/jenkins/job/pof/config.xml -H Pragma: no-cache -H Accept-Encoding: gzip, deflate, sdch -H Accept-Language: en-US,en;q0.8,fr;q0.6 -H Upgrade-Insecure-Requests: 1 -H User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36 -H Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8 -H Referer: http://localhost:8080/jenkins/login?from%2Fjenkins%2Fjob%2Fpof%2Fconfig.xml -H Cookie: screenResolution1440x900; JSESSIONIDXXXX; JSESSIONID.XXXXXX; screenResolution1440x900 -H Connection: keep-alive -H Cache-Control: no-cache --compressed --data-binary config.xml -H .crumb: 6bbabc426436b72ec35e5ad4a4344687链接 https://benkiew.wordpress.com/2012/01/12/automating-hudsonjenkins-via-rest-and-curl-a-very-small-cookbook/ https://wiki.jenkins-ci.org/display/JENKINS/RemoteaccessAPI 翻译自: https://www.javacodegeeks.com/2016/05/update-jenkins-job-posting-config-xml.html