我正在尝试在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中配置为字符串。
关于我在做什么错的任何想法吗?
答案 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干扰它。其他特殊字符也是如此,例如'&','?'和“ *”。