gitlab-ci - curl命令在gitlab-ci管道上不起作用
问题描述
我正在尝试使用 gitlab REST API v4 提取项目 ID,但是当我发出 curl 命令时,出现此错误:
"jobs:test:script config should be a string or an array of strings"
命令是这个:
curl -k -H "PRIVATE-TOKEN: PRIVATE-TOKEN" "https://gitlab.nbg992.poc.dcn.telekom.de/api/v4/projects?search=$CI_PROJECT_NAME"
我试图单引号它:
'curl -k -H "PRIVATE-TOKEN: PRIVATE-TOKEN" "https://gitlab.nbg992.poc.dcn.telekom.de/api/v4/projects?search=$CI_PROJECT_NAME"'
但是当我这样做时,它消除了失败,但命令被忽略了。所以我试着像这样评估它:
eval - 'curl -k -H "PRIVATE-TOKEN: PRIVATE-TOKEN" "https://gitlab.nbg992.poc.dcn.telekom.de/api/v4/projects?search=$CI_PROJECT_NAME"'
当我这样做时,它再次产生了失败:
"jobs:test:script config should be a string or an array of strings"
任何线索我应该如何发出 curl 命令?我认为导致失败的原因是"PRIVATE-TOKEN: PRIVATE-TOKEN"
解决方案
这对我有用
在变量部分声明作业变量,例如:
- 变量:
PRIVATE-TOKEN: "TokenValue"
PRIVATE_HEADER: "PRIVATE-TOKEN: ${PRIVATE-TOKEN}"
然后在 CI 文件的 Script Section 下使用 Curl 命令如下
- 脚本:
curl -k -H ${PRIVATE_HEADER} "https://gitlab.nbg992.poc.dcn.telekom.de/api/v4/projects?search=${CI_PROJECT_NAME}
在变量名周围使用{}
大括号可确保":"
不会出现该问题
推荐阅读
- azure - Azure Datafactory V2 - IfCondition 活动不能包含另一个 IfCondition 活动
- javascript - 如何在 ZendFramework 2 中使用 Node.js 创建 React 应用程序
- java - Wildfly 卡在启动模式
- regex - 段落以大写字母开头,以标点符号结尾
- swap - OpenVz 7 如何处理交换?
- joomla - RSFORMS 感谢信息显示提交 ID
- mysql - 加入年份范围内的表时出现意外结果
- python - 嗨,如何删除字符串中的一些符号并列出其余单词?
- javascript - javascript中的手风琴选择器
- azure - Azure VM RHEL 自定义脚本扩展:未找到 script.sh 错误