【问题标题】:How to send a message to Slack using curl from gitlab-ci.yml?如何使用来自 gitlab-ci.yml 的 curl 向 Slack 发送消息?
【发布时间】:2020-08-19 05:02:42
【问题描述】:

我正在使用 GitLab 进行 CI/CD 流程。我想在 Slack 中向我的频道发送消息。从终端遵循 API 工作:

curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/xxx/yyyy/zzzz

但是,当我将此行放入我的 .yml 文件时,它给了我一个“yaml 无效错误”。完整版块在这里:

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 config 应该是字符串或字符串数​​组

【问题讨论】:

  • 我记得,一个作业中不允许有多个 script 键,并且每个作业必须有一个 script。请删除第一个。
  • 您可以拥有before_scriptscriptafter_script,所以您很好。您可以发布完整的错误消息吗?你用的是 gitlab CE 还是 EE?

标签: yaml gitlab-ci slack


【解决方案1】:

根据您的错误信息,slack_message 中的 curl 命令不正确。尝试将整个命令用引号括起来并转义内部引号。按照您的方式,YAML 解析器认为 Content-type: application/json 是字典的键:值对。

试试这个:

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

专业提示

您可以使用CI Lint 工具来验证gitlab-ci.yaml 的内容。您可以在CI/CD > Pipelines 屏幕中访问它。见CI Lint

还有一个有用的网站http://www.yamllint.com/,您可以在其中输入 YAML,它会 (a) 验证它,并且 (b) 返回一个 UTF-8 版本。如果您遇到字符串问题,UTF-8 版本看起来会被破坏(这就是您的 YAML 所发生的情况)。

【讨论】:

  • 感谢您的回复。这是我收到的错误消息。 “状态:语法不正确错误:jobs:slack_message:script config 应该是一个字符串或一个字符串数组”你知道我有 2 个阶段。一个阶段用于发送文件,另一个阶段用于将文本消息发送到频道。第一阶段(发送文件)是正确的,但另一个不工作
  • 我已经编辑了主要的问题主体,我放了两个主体块以备不时之需,第一个是正确的,但第二个是不正确的,我收到了一个错误。
猜你喜欢
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2022-07-25
  • 1970-01-01
相关资源
最近更新 更多