GitLabからslackに自動通知

開発をしていると、通知ってすごい大事だと思います。

「Gitでリクエストを作った後に、Slackでも「PR作成しました」みたいなメッセージを送る」

これが地味に面倒臭い、、、。

できれば

「リクエストが作成された時点で、Asigneeの人に自動で通知されて欲しい」

「レビュワーの人にとっては、マージされた時にも通知されて欲しい」

これぜーんぶ自動化できたら、いいなと思ってCIをいじっていたら実現しました。

mainブランチにマージされると、こういうメッセージをSlackに飛ばしてくれます^^

手順

  1. GitLabでvariableにSLACK_WEBHOOK_URLを設定する
  2. 以下のコードをリポジトリルートに作成する

.gitlab-ci.yml

stages:
  - deploy

slack-notify:
  stage: deploy
  only:
    refs:
      - main
  script:
    - 'curl -X POST --data-urlencode "payload={
        \"channel\": \"#gitlab-notify\",
        \"username\": \"GitLab\",
        \"text\": \"
          マージは人生の喜び\n
          $CI_PROJECT_NAME\n
          $CI_PROJECT_TITLE\n
          CI_MERGE_REQUEST_TITLE\n
          $CI_COMMIT_TITLE\n
          $CI_PIPELINE_URL
          \",
        \"icon_emoji\": \":ghost:\"
      }" $SLACK_WEBHOOK_URL'

これはcurlコマンドで実装しているので、GitLabとSlackで何か特別なアプリなどを入れる必要はありません。

そこが、イケてるところですね。

  1. GitLabでmainブランチにマージされる。
  2. Slackのチャンネルにメッセージが自動送信される。

これでかなり開発環境の衛生状態が改善されましたね!