我有一个Jenkins作业,它有一个布尔参数。此参数的默认值为false。我通过张贴到构建URL并传递我的令牌和参数,从(另一个作业的)ANT构建脚本远程构建它。
curl -X POST 'MY_JENKINS_SERVER/job/JOB_NAME/buildWithParameters?token=12345;REPORTS=true' --user MY_USERNAME:MY_PASS
请注意,我的URL用单引号括起来(这应该考虑编码问题),布尔参数的名称是REPORTS(大写为Jenkins和ANT)。此外,我想注意的是,如果我使用与号(&)来分隔令牌和我的其他参数,我在构建时会收到以下错误:对实体"REPORTS"的引用必须以";"结尾分隔符。
无论REPORTS参数的值在URL字符串中是什么,在进行构建时,该参数始终是默认值false。我在Jenkins中将默认值更改为true,并且无论传递的参数值如何,它都始终为true。基本上,它总是使用默认值并忽略传递的参数值。我还尝试过不传递REPORTS参数,当然它采用默认值。
在我的作业的构建文件(我正在远程触发的文件)中,我将参数打印为${env.REPORTS}
我在SO上看过类似的问题,但他们的解决方案都不适合我。我试着在URL中移动参数,但似乎什么都不起作用。有什么想法吗?
基于这一行:
对实体"REPORTS"的引用必须以";"结尾定界符
尝试&
而不是&
这不是Jenkins的问题,而是Ant的问题,Ant是一个XML文件。由于&
是XML的一个特殊字符,为了在任何地方都有一个&
的普通值,您需要将其写为&