gitlab-ci文件中对Jenkins API的cURL命令正在删除参数

时间:2018-07-25 19:29:56

标签: curl jenkins gitlab-ci

我正在尝试在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中配置为字符串。

关于我在做什么错的任何想法吗?

1 个答案:

答案 0 :(得分:1)

  

关于我在做什么错的任何想法吗?

您没有转义外壳特殊字符(&)。考虑以下两个片段:

  • 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干扰它。其他特殊字符也是如此,例如'&','?'和“ *”。