lazyload the images

最新精選 Featured post

異世界穿越作品整合

訂閱

訂閱 FB 專頁

每月雙數周日為固定發佈日

訂閱FB 專頁,有新發佈時將會立即看見。
Youtube 頻道經常會有電玩錄影

24/04/2022

github action slack notify

文章分類: , ,

 


最近幾個人一起開發系統,決定使用 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 發一條訊息


步驟

  1. Slack - Add channels
  2. Github - New Repository secret
  3. 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 整合聯動


  1. 但是它不能設定訊息發在這條頻道,全部都堆在 Apps Github 裡面。如果有很多個 Repository 根本沒有人會想看
  2. 安裝時要 grant 權限給Slack 去存取你的Github Repository
    個人帳號很簡單,但海豚認為如果是公司帳號,可能公司根本不會放權限,讓你給予第三方應用去 存取公司的 Repository
  3. 此外,設定時要輸入一條你不會記到的 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