2014-08-27 296 views
3

我有一个Jenkins作业具有单个布尔参数。此参数的默认值为false。我通过发布到构建URL并传递我的令牌和参数,从另一个作业的ANT构建脚本远程构建它。Jenkins远程参数化构建始终使用默认参数值而不是那些传递的参数

curl -X POST 'MY_JENKINS_SERVER/job/JOB_NAME/buildWithParameters?token=12345;REPORTS=true' --user MY_USERNAME:MY_PASS 

注意,我在单引号(这应该照顾的编码问题)的URL和布尔参数的名称是报告(大写在詹金斯和ANT)。此外,我想指出,如果我使用&符号(&)来分隔令牌和我的其他参数,则在构建时出现以下错误:实体“REPORTS”的引用必须以';'结尾,分隔符。

不管URL字符串中的REPORTS参数的值是什么,参数在构建时总是默认值为false。我在Jenkins中将默认值更改为true,并且无论传递的参数值如何都始终为true。基本上,它总是使用默认值并忽略传递的参数值。我也尝试传递任何REPORTS参数,当然它需要默认值。

在我工作的build文件(即我远程触发的),我打印参数为$ {} env.REPORTS

我看过了上如此相似的问题,但没有他们的解决方案的工作为了我。我试着在URL中移动参数,但似乎没有任何工作。有任何想法吗?

+0

[对实体“foo”的引用必须以';'结尾。分号](http://stackoverflow.com/questions/6483807/the-reference-to-entity-foo-must-end-with-the-delimiter) – BalusC 2016-05-09 12:25:03

回答

3

基于该行:

到实体“报告”必须与末尾的参考“;”分隔符

相反的&,尝试&

这不是詹金斯的问题,而是用Ant这是一个XML文件。由于&是XML的特殊字符,为了在任意位置具有明确的值&,您需要将它写为&

+0

谢谢。我不敢相信这很简单。但为什么它需要编码&?除非我误解了,参数化构建文档[链接](https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build)似乎暗示引用一个URL并不需要转义它。 – Jeeves 2014-08-27 17:55:37

+0

我不知道你的情况。对我来说,直接使用'?token = 12345&REPORTS = true'可以毫无问题地使用单引号和双引号。但我***只是在其他地方出现了与**完全相同的错误消息。对我来说,它包含'&'作为XML文件中的文本(从ANT执行命令行),解决方案是'&' – Slav 2014-08-27 18:08:00

+0

等一下......我重新读你的问题。你从ANT脚本启动'curl',所以你的问题和我的一样。这是一件XML事情,与詹金斯无关。 – Slav 2014-08-27 18:11:13