如何更新Jenkins作业发布config.xml

最近,我想更新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:// localhost:8080 / jenkins / configureSecurity / –>启用安全性)

Screen-Shot-2016-05-15-at-22.25.35-768x628

这意味着我们现在需要验证我们的两个请求:

curl -X GET http://anthony:anthony@localhost:8080/jenkins/job/pof/config.xml -o config.xml
curl -X POST http://anthony:anthony@localhost:8080/jenkins/job/pof/config.xml --data-binary "@config.xml"

简单的安全性:启用CSRF(滚动)

您还需要保护您的jenkins实例免受CSRF攻击 ( http:// localhost:8080 / jenkins / configureSecurity / –> enable csrf crumb)

Screen-Shot-2016-05-15-at-22.26.20-768x195
现在,这也意味着您的请求需要发送一个屑状值,无论是作为参数还是通过标头

如果您不这样做:

curl -X POST http://anthony:anthony@localhost:8080/jenkins/job/pof/config.xml --data-binary "@config.xml"

您会得到这样的错误:

<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /jenkins/job/pof/config.xml. Reason:
<pre>    No valid crumb was included in the request</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>

甚至 :

<body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>java.io.IOException: Failed to persist config.xml
hudson.model.AbstractItem.updateByXml(AbstractItem.java:677)
hudson.model.AbstractItem.doConfigDotXml(AbstractItem.java:617)
…..
</pre></p><p><b>root cause</b> <pre>javax.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:anthony@localhost:8080/jenkins/job/pof/configure | sed -n 's/.*\.crumb", "\(.*\)").*/\1/p' > crumb.txt

但是,还有专门用于此的服务:

curl http://anthony:anthony@localhost:8080/jenkins/crumbIssuer/api/xml | sed -n 's/.*\(.*\)<\/crumb>.*/\1/p' > crumb.txt

使用面包屑值

curl -X POST http://anthony:anthony@localhost:8080/jenkins/job/pof/config.xml --data-binary "@config.xml" -data ".crumb=6bbabc426436b72ec35e5ad4a4344687"

哎呀,那没用

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:anthony@localhost:8080/jenkins/job/pof/config.xml --data-binary "@config.xml" -H ".crumb: 6bbabc426436b72ec35e5ad4a4344687"

基于cookie的安全性(无用户名/密码)

在某些安装中(例如cloubees),您不能在请求中传递用户名和密码。 我建议您改用cookie。

要检索它们,请检查通过身份验证的浏览器发送的cookie,例如chrome:

Screen-Shot-2016-05-16-at-10.11.08-768x408
然后将此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;q=0.8,fr;q=0.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/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: http://localhost:8080/jenkins/login?from=%2Fjenkins%2Fjob%2Fpof%2Fconfig.xml' -H 'Cookie: screenResolution=1440x900; JSESSIONID=XXXXX; JSESSIONID.XX=XXXX; screenResolution=1440x900' -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;q=0.8,fr;q=0.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/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: http://localhost:8080/jenkins/login?from=%2Fjenkins%2Fjob%2Fpof%2Fconfig.xml' -H 'Cookie: screenResolution=1440x900; JSESSIONID=XXXXX; JSESSIONID.XX=XXXXX; screenResolution=1440x900' -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;q=0.8,fr;q=0.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/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Referer: http://localhost:8080/jenkins/login?from=%2Fjenkins%2Fjob%2Fpof%2Fconfig.xml' -H 'Cookie: screenResolution=1440x900; JSESSIONID=XXXX; JSESSIONID.XX=XXXX; screenResolution=1440x900' -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/Remote+access+API

翻译自: https://www.javacodegeeks.com/2016/05/update-jenkins-job-posting-config-xml.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353865.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

月下“毛景树”

Description 毛毛虫经过及时的变形&#xff0c;最终逃过的一劫&#xff0c;离开了菜妈的菜园。 毛毛虫经过千山万水&#xff0c;历尽千辛万苦&#xff0c;最后来到了小小的绍兴一中的校园里。爬啊爬~爬啊爬~~毛毛虫爬到了一颗小小的“毛景树”下面&#xff0c;发现树上长着他最…

自由口通信模式下计算机读写PLC存储区的程序

自由口通信模式下计算机读写PLC存储区的程序 2008-8-20 8:51:00 来源&#xff1a;摘 要&#xff1a;本文介绍了在自由口通信模式下&#xff0c;用计算机读写S7-200 PLC存储区内相邻的多个字节数据的通信程序设计方法&#xff0c;程序设计中采用了多种可靠性措施。 关键词&…

Zookeeper入门

ZooKeeper 是一个开源的分布式协调架&#xff0c;主要用来解决分布式集群中应用系统的一致性问题 本质 分布式的文件存储系统(Zookeeper文件系统监听机制)&#xff0c;是一个基于观察者模式设计的分布式服务管理框架 zookeeper的数据结构 Zookeeper的层次模型称作Data Tree,…

【laravel5.4】重定向带参数

1、 2、重定向回上一页面 3、返回上一页面带参数 转载于:https://www.cnblogs.com/xuzhengzong/p/8715463.html

Google Protocol Buffers 2.3.0 for java 快速开始

Google Protocol Buffers &#xff12;.3.0 for java 快速开始 博客分类&#xff1a; Java JavaGoogleUbuntuLinux数据结构Protocol Buffers是一个平台中立&#xff0c;编程语言无关的&#xff0c;可扩展的机制&#xff0c;是用于结构化数据串行化的灵活、高效、自动的方法&a…

jenkins api_接触Jenkins(Hudson)API,第2部分

jenkins api这篇文章从本教程的第1部分继续。 已经快一年了&#xff0c;但是我终于有时间重新审视我为与Jenkins api交互而编写的一些代码。 我已经使用了部分工作来帮助管理许多Jenkins构建服务器&#xff0c;主要是保持插件同步以及将作业从一台机器移动到另一台机器。 在本文…

JAVAC 命令详解

JAVAC 命令详解 结构 javac [ options ] [ sourcefiles ] [ files ]参数可按任意次序排列。 options 命令行选项。 sourcefiles 一个或多个要编译的源文件&#xff08;例如 MyClass.java&#xff09;。 files 一个或多个对源文件进行列表的文件。 说明 javac 有两种方法可将源…

[MEGA DEAL]终极Java捆绑包(95%折扣)

通过114个小时的培训来掌握这种流行的编码语言&#xff0c;从而开始您的编程奥德赛 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的Ultimate Java Bundle 仅售69美元&#xff0c;而不是原始价…

Mybatis 在 insert 之后想获取自增的主键 id,但却总是返回1

记录一次傻逼的问题&#xff0c; 自己把自己蠢哭&#xff1a;Mybatis 在 insert 之后想获取自增的主键 id&#xff0c;但却总是返回1 错误说明&#xff1a; 返回的1是影响的行数&#xff0c;并不是自增的主键id&#xff1b; 想要获取自增主键id&#xff0c;需要通过xx.getId()方…

android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket】

android与PC&#xff0c;C#与Java 利用protobuf 进行无障碍通讯【Socket】 2011-04-27 17:00:11 标签&#xff1a;休闲 Java Socket 移动开发 android 原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律…

Confluence 6 自动添加用户到用户组

默认组成员&#xff08;Default Group Memberships&#xff09;选项在 Confluence 3.5 及后续版本和 JIRA 4.3.3 及后续版本中可用。这字段将会在你选择 Read Only, with Local Groups 权限后出现。如果你希望你的用户能自动添加到用户组或多个用户组&#xff0c;在这里输入你希…

Protocol Buffers的应用与分析

Protocol Buffers的应用与分析 明尘 1 Protocol Buffers的介绍 Protocol Buffers是一种用于序列化结构化数据的机制&#xff0c;它具有灵活、高效、自动化的特点。类似于XML&#xff0c;但是比XML更小巧、快捷、简单。在Google 几乎所有它内部的RPC协议和文件格式都是采用PB。…

jenkins api_接触Jenkins(Hudson)API,第1部分

jenkins api哪一个-哈德森还是詹金斯&#xff1f; 都。 几个月前&#xff0c;我开始使用Hudson v1.395来从事这个小项目&#xff0c;在出现巨大分歧之后又回到了这个项目。 我以此为契机&#xff0c;看我将来选择永久搬到詹金斯时是否会遇到任何重大问题。 出现了一些麻烦-最值…

linux下面调试C、C++

(1)写好makefile文件&#xff08;支持debug&#xff09; objects Main.o Satellite.o TimeSystem.o SRPPara:$(objects) g -g -o SRPPara $(objects)Main.o:SRPPara.h Satellite.h TimeSystem.h g -c -g Main.cppSatellite.o:Satellite.h TimeSystem.h g -c -g Satellite.cpp…

Swing应用程序中的JavaFX 8 DatePicker

1.概述 本文显示了一个使用JavaFX 8 DatePicker控件的Java SE 8 Swing应用程序的示例。 DatePicker控件允许用户以文本形式输入日期或从日历弹出窗口中选择日期。 本示例使用其中带有FX控件的Swing JFrame 。 为了将FX内容嵌入Swing应用程序中&#xff0c; javafx.embed.swing…

java 中的override overload 比较

java 中的override & overload 比较 很久没看Java&#xff0c;忘记override和overload的区别了。百度了一下&#xff0c;把一个小弟的文章抄下来&#xff0c;备用。 方法的重写&#xff08;Overiding&#xff09;和重载&#xff08;Overloading&#xff09;是Java多态性的…

Apache Bench安装与使用

转载&#xff1a;ApacheBench&#xff08;ab&#xff09;使用详解 一、Apache Bench简介 ApacheBench 是 Apache 服务器自带的一个web压力测试工具&#xff0c;简称ab。ab又是一个命令行工具&#xff0c;对发起负载的本机要求很低&#xff0c;根据ab命令可以创建很多的并发访问…

[virtualenvwrapper] 命令小结

创建环境 mkvirtualenv env1mkvirtualenv env2环境创建之后&#xff0c;会自动进入该目录&#xff0c;并激活该环境。 切换环境 workon env1workon env2列出已有环境 workon退出环境 deactivate删除环境 rmvirtualenv创建project 项目将创建到PROJECT_HOME目录下&#xff0c;实…

轻松搭建一个Windows SVN服务器

轻松搭建一个Windows SVN服务器 前文所述SVN客户端使用的时候&#xff0c;用的SVN服务器通常为外部&#xff0c;例如Google Code的服务器&#xff0c;不过&#xff0c;做为一个程序开发人员&#xff0c;就算自己一个人写程序&#xff0c;也应该有一个SVN版本控制系统&#xff0…

cobertura覆盖率_Cobertura和Maven:集成和单元测试的代码覆盖率

cobertura覆盖率在姜黄项目中&#xff0c;我们每晚维护一个仪表板。 在仪表板上&#xff0c;我们收集有关项目的统计信息&#xff0c;包括代码覆盖率&#xff0c;findbugs分析和其他指标。 我们一直在使用Maven EMMA插件来提供代码覆盖&#xff0c;但是遇到了EMMA问题。 在对类…