如何解决我们如何使用gitlab-ci.yml文件中的curl向松弛发送消息 专业提示
我正在使用GitLab进行CI / CD处理。而且我想在闲暇时向我的频道发送消息。终端可以使用以下API。
curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello,World!"}' https://hooks.slack.com/services/xxx/yyyy/zzzz
但是当我将此行放入我的.yml文件时,它给了我yml无效错误。完整的区块在这里:
slack_jar:
stage: slack
before_script:
- echo "hi there"
script:
- curl -F file=@target/springApp-0.0.1.jar -F channels=#application_dev_backend -F token='xoxb-1111-2222-yyyyyy' https://slack.com/api/files.upload
only:
- dev
slack_message:
stage: slack
script:
- echo "Send Slack Messages"
- curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello,World!"}' https://hooks.slack.com/services/xxxx/yyyy/zzzz
only:
- dev
第一阶段(发送文件)正确,但是第二阶段不起作用。这是我收到的错误消息:
状态:语法不正确错误:jobs:slack_message:script配置应为字符串或字符串数组
解决方法
根据您的错误消息,slack_message
中的curl命令不正确。尝试将整个命令用引号引起来,并转义内部引号。通过这种方式,YAML解析器认为Content-type: application/json
是字典的key:value对。尝试以下方法:
slack_message:
stage: slack
script:
- echo "Send Slack Messages"
- "curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"Hello,World!\"}' https://hooks.slack.com/services/xxxx/yyyy/zzzz"
only:
- dev
专业提示
如果您使用的是GitLab企业版(EE),则可以使用CI Lint
工具来验证gitlab-ci.yaml
的内容。您可以在CI/CD > Pipelines
屏幕中访问它。参见CI Lint。
还有一个简洁的网站http://www.yamllint.com/,您可以在其中输入YAML,它将(a)对其进行验证,并且(b)返回UTF8版本。如果您遇到字符串问题,则UTF8版本看起来会被弄乱(YAML就是这种情况)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。