如何使用 gitlab-ci 中的变量在 Slack 通道中发送通知

Kub*_*hon 5 curl gitlab gitlab-ci slack

我正在向 gitlab-ci 流程添加一个新阶段,以便在开始或结束新的释放部署时发送通知。我首先在 Slack 中创建传入 Webhook,然后更新了该gitlab-ci.yml文件。

这是子步骤将从中继承的父阶段。

#------------------------------------------
# Slack stage, used by slack-start stage and slack-end stage.
#------------------------------------------
.slack:
  stage: slack
  image:
    name: curlimages/curl
  script:
    - "curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"${SLACK_MESSAGE}\"}' https://hooks.slack.com/services/TH6L32SAC/B2B0LA77/UR63paW7kHNUoTgSL2LRy"
  tags:
    - kubernetes
Run Code Online (Sandbox Code Playgroud)

这是一个子步骤,(发送开始消息)

#------------------------------------------
# Notify on the start of a new test release
#------------------------------------------
slack-start-staging:
  stage: slack-start-staging
  extends:
    - .slack
  variables:
    SLACK_MESSAGE: We are starting the deployment of a new test release on the QA environnement
  rules:
    - if: $CI_COMMIT_BRANCH == "develop" && $CI_PIPELINE_SOURCE == "push"
Run Code Online (Sandbox Code Playgroud)

我在专用通道上收到消息,但该变量${SLACK_MESSAGE}未被解释。

以下是我在 Slack 上得到的准确信息:the_app_name: ${SLACK_MESSAGE}

sla*_*uth 4

您必须使用双引号才能解析环境变量:

script:
    - 'curl -X POST -H "Content-type: application/json" --data "{\"text\":\"${SLACK_MESSAGE}\"}" https://hooks.slack.com/services/TH6L32SAC/B2B0LA77/UR63paW7kHNUoTgSL2LRy'
Run Code Online (Sandbox Code Playgroud)