CircleCI slack orbs 文档可以在这里找到:https://circleci.com/developer/orbs/orb/circleci/slack。 在
only_notify_on_branch
示例中,他们展示了如何手动将用户 ID 硬编码到通知模板中,即: mentions: '<@U8XXXXXXX>
但如果您尝试在这个地方添加一个变量,例如mentions: <@SLACK_USER_ID>
它只会打印出模板中的用户 ID,而不会实际提及用户
这个答案在使用内置的 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