初めに
2022年10月19日以降、GitLab のFree プランのユーザ制限が5人までとなりました...><
(詳しくはこちらを確認ください)
弊社ではGitLab, GitHub の両方を使っており、今回のGitLab のプラン変更に伴い
社内でいろいろ議論があった結果、GitLabで管理しているプロジェクトを全てGitHub に移行することにしました。
そこでGitHub とGitLab の違いで出たのが、wiki 更新のSlack 通知がGitHub では画面ぽちぽちで設定できない...ということが発覚しました
調べてみるとGitHub Actions でなら通知可能なことがわかったのでその設定方法を記事にまとめました。
同じような問題等でGitHub wiki の追加/更新をSlack で知りたいという方がいたらご参考になれば幸いです。
完成系
- wiki を新規追加/更新したかをSlack から判断可能
- 追加: Wiki created: wiki
- 更新: Wiki edited: wiki
-
Go To Detail
ボタンをクリックでWiki の差分ページへ遷移します - ※ wiki の削除通知は実装できていません...
- ワークフロー実行トリガーを
How-to
で設定しているgollum
だと発火しない...orz - 設定の仕方わかる方教えてください
- ワークフロー実行トリガーを
※ 私の場合はIncoming Webhook の設定からName(github actions) とIcon(github ロゴの画像) を変更しています。
How-to
1. .github/workflows/wiki.yml
を作成する
ワークフロー実行のトリガーを gollum
を使用しています。
このイベントはデフォルトブランチに追加していないのイベントが発火しないのでPR 作成して通知がこない...なぜだ...
ということにならないように注意しましょうw
.github/workflows/wiki.yml
name: wiki
on:
gollum:
jobs:
notify-slack:
runs-on: [self-hosted]
steps:
- uses: actions/checkout@v3
with:
repository: ${{ github.event.repository.full_name }}.wiki
ref: ${{ github.event.pages[0].sha }}
fetch-depth: 2
- name: Slack
env:
ACTION: ${{ github.event.pages[0].action }}
TITLE: ${{ github.event.pages[0].title }}
HTML_URL: ${{ github.event.pages[0].html_url }}
WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
run: |
url=${HTML_URL}/_compare/$(git rev-parse HEAD^)...$(git rev-parse HEAD)
curl -X POST ${WEBHOOK_URL} \
-H 'Content-type: application/json' \
-d "{ \
\"blocks\": [{ \
\"type\": \"section\", \
\"text\":{ \
\"type\": \"mrkdwn\", \
\"text\": \"Wiki ${ACTION}: ${TITLE}\" \
}, \
\"accessory\": { \
\"type\": \"button\", \
\"text\": { \
\"type\": \"plain_text\", \
\"text\": \"Go to Detail\", \
\"emoji\": true \
}, \
\"value\": \"click_me_123\", \
\"url\": \"${url}\", \
\"action_id\": \"button-action\" \
} \
}] \
}"
(Slack 通知のbody 設定はこちらから独自に設定できます)
2. GitHub Seacret に SLACK_WEBHOOK
の環境変数をセットする
-
こちらを参考に追加します
- Repository secrets に
SLACK_WEBHOOK
が追加されていらばOK です
- Repository secrets に
Slack 通知を確認してみよう
- wiki を更新したらGitHub Actions が実行されます.
- wiki の左側に黄色であれば、
How-to
で設定が正常に適用されています。これがチェックが入った緑色になれば通知が完了しています。
- wiki の左側に黄色であれば、
- ↓画像のように通知ができていればOKです