【问题标题】:cURL command to Jenkins API in gitlab-ci file is dropping parametersgitlab-ci 文件中 Jenkins API 的 cURL 命令正在删除参数
【发布时间】:2019-01-02 17:07:39
【问题描述】:

我正在尝试在 Jenkins 的 API 端点上的 gitlab-ci 文件中执行 cURL 命令以开始工作,但无论我尝试什么,第二个参数总是被丢弃。这是我的 gitlab-ci 文件:

selenium_test:
  stage: run_test
  tags:
    - autotest1
  only:
    - trigger
  script:
    - jenkins_response=$(curl -s -I -X POST http://user:token@localhost:8080/job/qTest/buildWithParameters?environment=CI%20Dev&test_id=96)

使用上面的代码,test_id=96 被删除。如果我像 test_id=96&environment=CI%20Dev 这样颠倒参数的顺序,那么 environment=CI%20Dev 就会被删除。

我也尝试过像 environment%3DCI%20Dev%26test_id%3D96 这样对整个字符串进行编码,但这也不起作用。

Jenkins 的两个参数 test_id 和 environment 在 Jenkins 中配置为字符串。

关于我做错了什么有什么想法吗?

【问题讨论】:

  • 您是否尝试转义 & 以及(不仅仅是空格)或将完整的网址放在双引号中?

标签: curl jenkins gitlab-ci


【解决方案1】:

关于我做错了什么有什么想法吗?

您没有转义 shell 特殊字符 (&)。考虑以下两个 sn-ps:

  • curl http://urlecho.appspot.com/echo?status=200&body=ALLOK 将删除第二个参数并返回 None

  • curl "http://urlecho.appspot.com/echo?status=200&body=ALLOK" 将解释第二个参数并返回正确的 ALLOK 响应。

您有两个选择:用双引号将完整的 url 括起来,或者像在示例中使用空格字符一样转义 &。考虑以下来自cURL documentation 的建议:

当从命令行提示符调用时,您可能必须将完整的 URL 放在双引号内以避免 shell 干扰它。这也适用于其他特殊处理的字符,例如“&”、“?”和 '*'。

【讨论】:

  • 就是这样。非常感谢您的帮助!
猜你喜欢
  • 2022-08-14
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 2021-03-06
  • 2019-05-13
  • 2022-01-15
  • 1970-01-01
  • 2021-05-08
相关资源
最近更新 更多