你能在同一个 Gitlab 存储库上设置 2 个不同的 Slack webhooks 吗?

Can you setup 2 different Slack webhooks on a same Gitlab repository?

我有两个 slack 频道:Team A 和 Team B。

我有一个 Gitlab 仓库,有两个分支:分支 A 和分支 B。

我想设置两个 webhook:当分支 A 发生推送时,一条消息会在 Slack 频道团队 A 上发送。当推送发生在分支 B 上时,一条消息会在 Slack 频道团队 B 上发送。

我认为我们不能使用 Gitlab 的 Webhooks 部分,我们必须使用 this Stack Overflow question 中描述的 Slack Integration 部分。

在 Gitlab 的 Slack Integragtion 上,我只能为其中一个松弛通道输入一个 url 而不是 2:

有人知道解决方法吗?

我认为没有仅使用 webhook 的解决方法,这就是 Akshay Kapoor wrote an alternative solution "Custom Slack Integrations for Gitlab CI/CD Pipelines"

的原因

想法是使用 GitLab CI/CD feature(构建在 GitLab 服务器端,而不是在客户端发送事件的 WebHooks)

最终结果:

想法是,在服务器端的脚本 运行 上,您可以控制和添加您想要的任何条件(例如被推送的分支)以重定向您的 Slack 通知。

Akshay 使用 Slack Block Kit (and its playground) 来构建其通知消息。

然后他发帖:

function share_slack_update() {

    curl -X POST                                           \
        --data-urlencode "payload=$(print_slack_summary)"  \
        "${SLACK_WEBHOOK}"

}