CircleCI Slack Orbs。如何在 CircleCI 失败时在 Slack 消息中提及用户?

问题描述 投票:0回答:1

CircleCI slack orbs 文档可以在这里找到:https://circleci.com/developer/orbs/orb/circleci/slack。 在

only_notify_on_branch
示例中,他们展示了如何手动将用户 ID 硬编码到通知模板中,即:
mentions: '<@U8XXXXXXX>
但如果您尝试在这个地方添加一个变量,例如
mentions: <@SLACK_USER_ID>
它只会打印出模板中的用户 ID,而不会实际提及用户

slack circleci
1个回答
2
投票

这个答案在使用内置的 CircleCI 松弛模板(如

basic_fail_1
)时有效,我不知道它在使用自定义块时是否有效。

简短版本:
需要直接将 slack 用户 ID 导出到

SLACK_PARAM_MENTIONS
变量(CircleCI 模板识别此环境变量):
echo "export SLACK_PARAM_MENTIONS='<@$SLACK_USER_ID>'" >> $BASH_ENV
。这需要在任何可能失败的步骤之前的作业步骤中完成。

更长的版本和代码:

.circleci/config.yml
文件中,您将可以访问
$CIRCLE_USERNAME
变量,该变量将是提交者的 bitbucket/github 用户名。这需要映射到您希望在发生故障时收到通知的所有用户的用户 ID。用户的 slack ID 可以在桌面应用程序的 slack 个人资料中找到。

jobs:
  build_app:
    ...
    steps:
      - ...
      - map_circle_to_slack
      - run: yarn install
      - run: yarn build
      - slack/notify:
          event: fail
          channel: '<slack-channel-id>'
          template: basic_fail_1
commands:
    map_circle_to_slack:
        steps:
          - run:
              name: Map circle username to slack user id
              command: |
                case $CIRCLE_USERNAME in
                              'user1-bitbucket-or-github-username')
                                  SLACK_USER_ID='user1-slackid'
                                    ;;
                              'user2-bitbucket-or-github-username')
                                  SLACK_USER_ID='user2-slackid'
                                    ;;
                              'user3-bitbucket-or-github-username')
                                    SLACK_USER_ID='user3-slackid'
                                      ;;
                                *)
                          esac
                echo "export SLACK_PARAM_MENTIONS='<@$SLACK_USER_ID>'" >> $BASH_ENV 

© www.soinside.com 2019 - 2024. All rights reserved.