【问题标题】:jenkins: pass multiple "Extended Choice Parameter" values using a URLjenkins:使用 URL 传递多个“扩展选择参数”值
【发布时间】:2019-02-04 17:06:27
【问题描述】:

我的Jenkins 构建中的一个参数是Extended Choice Parameter,它在从构建网页调用构建时作为逗号分隔值的选择提交。

但是,我还需要使用 wget + URL 调用构建。

所以,格式为:

wget "${JENKINS_URL}/job/buildname/buildWithParameters?ECP_LIST=blah1&token=token"

假设我的扩展选择参数 ECP_LIST 有可能的值:blah1、blah2、blah3、blah4。

如果我调用,例如:

wget "${JENKINS_URL}/job/buildname/buildWithParameters?ECP_LIST=blah3&token=token"

EPC_LIST 参数的值为 blah3,构建开始正常。

但是,如果我希望使用 2 个或更多值来调用它,它只是将一个空白值传递给参数。

我尝试使用各种东西来分隔值,例如空格、编码逗号、分号。我没有任何运气在这里或在 Google 上找到答案。

【问题讨论】:

  • 你试过引用它们吗?如ECP_LIST="blah1,blah2,blah3"。然后如果失败,请尝试对引号进行 urlencoding。
  • 好建议 - 我尝试过引用,但没有使用 URL 编码的引号。不幸的是,两者都不起作用: wget "${JENKINS_URL}/job/buildname/buildWithParameters?ECP_LIST=%22blah3%20blah4%22&token=token"
  • 我也试过 %22blah3,blah4%22
  • 我遇到了同样的问题。即使我 urlencode 它仍然不会超过一个值。什么最终对你有用?
  • 嗨@onionjake。我在下面添加了一个解决方案。

标签: jenkins


【解决方案1】:

我确实通过多次选择ECP_LIST 解决了这个问题:

wget "${JENKINS_URL}/job/buildname/buildWithParameters?ECP_LIST=blah1&ECP_LIST=blah2&ECP_LIST=blah3&token=token"

将导致:

ECP_LIST=blah1,blah2,blah3

我希望这对你有用。

【讨论】:

  • 注意,使用构建后操作,在其他项目上触发参数化构建,并从文件中传递属性会更干净;你可以这样做: echo "ECP_LIST=blah1,blah2,blah3" > prop_file.txt
【解决方案2】:

在单引号中包含 URL 工作:

wget '${JENKINS_URL}/job/buildname/buildWithParameters?ECP_LIST=blah3&token=token'

类似地,如果您想使用 curl 通过您的 Jenkins API 运行 curl,您可以运行:

curl -X POST 'http://api:xxxxxxxxxxxxxxxxxxxxxxx@jenkins.YOURSERVER.com/job/BUILDNAME/buildWithParameters?parameter2=blah&parameter2=blahblah'

【讨论】:

  • 我在下面添加了一个解决方案
  • sudo curl --insecure --user $USER:$PASSWORD \ -X POST "${JOB_URL}/buildWithParameters?&param1=value&param2=value&param3=value&param4=value"
【解决方案3】:

如果您的参数包含特殊字符,您需要在将 URL 传递给 wget 之前对其进行编码。我在python中这样做。我使用卷曲。

url_params = {'param1' : param_value1, 'param2' : param_value2}
params_encoded = urllib.urlencode(url_params)
params = ['curl.exe', '-v', '-X', 'POST', '--show-error', '%s?%s' % (JobUrl), params_encoded]
subprocess.check_call(params)

【讨论】:

  • 即使使用 url 编码,它仍然不会使用多个参数值。
【解决方案4】:

这对我有用!

curl -X POST -u "username:password" '${JENKINS_URL}/job/buildnamebuildWithParameters?para1=value&para2=value'

【讨论】:

  • 不鼓励使用纯代码的答案。请单击edit 并添加一些词来总结您的代码如何解决问题,或者解释您的答案与之前的答案/答案有何不同。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多