最近幾個人一起開發系統,決定使用 Github。
Technical Lead 忽然問起 有沒有辦法,在Push之後自動通知大家? 和 自動deploy?
大家也不知道,Technical Lead 以前工作的地方有使用 CI/CD ,不過是別人建立的,詳情也不知道。
海豚有 20% 懷疑 Technical Lead 是否在試探我們一眾 小薯仔(small potato)
海豚之前上過一些網上 講解,對方展示了如何
透過 Microsoft Power Automate,在 Microsoft Teams 上,發佈一條訊息
便觸發 Power Automate 去跑 Github Action 進行 Build, Test, Deploy 到 Azure Web App / Azure VM
可惜公司認為 AWS 較 Azure 平宜,選用了海豚不熟悉的AWS
海豚 便開始在網絡上亂轉,由淺入深。 隨便找段入門 Github Action 試一試
M$ 難得的可以免費用 Github Action,
公開的 Repositories - 免費使用
私人的 Repositories - 2000 分鐘運算時間/每月
Push + Slack
先從簡單的開始,每當 push 上github,機械人便會在 slack 發一條訊息
步驟
- Slack - Add channels
- Github - New Repository secret
- Github Action - slack-notify.yml
Slack - Add channels
先在 Slack 開個 Channel,豚不想這類頻繁訊息亂入其它 Channel,開個專用的來放。
開立新 Channel
之後到 https://slack.com/apps/A0F7XDUAZ-incoming-webhooks?tab=more_info
按 Add to Slack,選取剛新增的 Channel
按 Add Incoming WebHooks Integration 生成一個 Webhook,Webhook 大概是 Key的概念
Github Action 透過 Webhook 才能在相關 Channel 發訊息
生成後 複製並記下 Webhook URL
忘了複製也可以再生成個新的,沒什麼大問題
Github - New Repository secret
到你的 Github Repository
Settings > Secrets > New Repository secret
名字是 SLACK_WEBHOOK
值填剛剛複製的 Webhook URL
Github Action - slack-notify.yml
在你的 repository 建立以下資料夾
.github/workflows/
新增1個檔案 slack-notify.yml
內容不貼這裡,海豚放在
https://gist.github.com/dolphinotaku/42e37ff868be7525f5816ffcc1e4323f#file-slack-notify-demo-yml
測試
海豚自已Push了一次,也找了同事Push了一次
Github Repository Action 上會看到 log 很方便
訊息也成功地由機械人自行發佈
初次使用,海豚傻傻的把例範的內容全貼上去,overwrite 了 Post Title, Post Content
最後修改了 slack-notify.yml 的內容,如何修改可以到參考連結閱讀使用說明和詳情。
海豚的最後版本,內容放在
https://gist.github.com/dolphinotaku/42e37ff868be7525f5816ffcc1e4323f#file-slack-notify-yml
自動發佈訊息的結果以下
題外話
有其它文章教用 Slack Apps - Github,杜芬宅試過,總結來說不推薦
上面的觸發點在 Github Action,而 Slack 有個類似 App Store/Marketplace的物體,可以在 Slack App 安裝Github ,繼而和你的Github Repository 整合聯動
- 但是它不能設定訊息發在這條頻道,全部都堆在 Apps Github 裡面。如果有很多個 Repository 根本沒有人會想看
- 安裝時要 grant 權限給Slack 去存取你的Github Repository
個人帳號很簡單,但海豚認為如果是公司帳號,可能公司根本不會放權限,讓你給予第三方應用去 存取公司的 Repository - 此外,設定時要輸入一條你不會記到的 Commands
/github subscribe organization/repository
總體來說,杜芬宅寧願多學點 Github Action,日後可以有更多發揮。
Reference
Features • GitHub Actions
https://github.com/features/actions
GitHub Actions Documentation - GitHub Docs
https://docs.github.com/en/actions
Quickstart for GitHub Actions
https://docs.github.com/en/actions/quickstart
GitHub Action - Slack Notify
https://github.com/marketplace/actions/slack-notify
Sending messages using Incoming Webhooks
https://api.slack.com/messaging/webhooks
Incoming WebHooks
https://slack.com/apps/A0F7XDUAZ-incoming-webhooks?tab=more_info
Slack + GitHub
https://slack.github.com/
GitHub + Slack Integration
https://github.com/integrations/slack
GitHub | Slack App Directory
https://slack.com/apps/A01BP7R4KNY-github?tab=more_info
No comments:
Post a Comment