由於去年上學期的軟體工程課程,我們很多組員都還在用 Line 群組進行討論與溝通,因為組員互相不太認識,並且因為其他組員多為學長姐,所以當初寫了這個的初始版本,讓他們可以更方便追蹤專案程式碼撰寫進度,但後來有一天突然好奇如果使用 Rust 來寫會是怎樣一個體驗,所以自己決定寫一個將初始版本以 Rust 重新撰寫的版本,並結合 GitHub CI 與 Rust 可編譯成 zero-dependency 執行檔的優勢,也順便做出了可直接部署的 Docker Image,除了讓自己未來需要使用時可以使用外,也可以讓需要的人一起使用。
如果想要看初始版本的也歡迎,初始版本除了可以部署至 Deno Deploy 外,也可以自行 fork 修改並部署至 Docker,想提 Pull Request 也非常歡迎喔!
Run Directly
- 安裝 Rust 環境
- 複製此專案
git clone https://github.com/Kayxue/GitHubPushWebhookLineBotRust.git
- 切換至專案目錄並在 IDE 中開啟
cd GitHubPushWebhookLineBotRustzed .
- 新增
.env
檔案,並填入以下內容,<LINE_BOT_ACCESS_TOKEN>
請替換成你自己的 Line Bot Access Token:
ACCESSTOKEN=<LINE_BOT_ACCESS_TOKEN>
- 執行
cargo run
- 查看終端機輸出,如果沒有任何錯誤,即可進行端口映射或者 Cloudflare Tunnel 等設定 (此 server 監聽之端口:
3000
)。
Deploy to Docker
Supported CPU Architecture
linux/amd64
linux/arm64
Image
ghcr.io/kayxue/githubpushwebhooklinebotrust:latest
:一般穩定版本ghcr.io/kayxue/githubpushwebhooklinebotrustnightly:xitcanightly
:結合了 Rust 目前尚未完成的 unsized_const_params feature 製作的版本,由於使用 nightly 分支的 rust toolchain 進行編譯,可能會相對比較不穩定,無法接受者請不要使用版本
Deploy
請遠端連線至要部署的裝置,並確保已經安裝好 Docker,輸入以下指令即可執行 Docker Image,<container_name>
請換成你想要的容器名稱,<LINE_BOT_ACCESS_TOKEN>
請替換成你自己的 Line Bot Access Token:
docker run --name <container_name> -p 3000:3000 -e ACCESSTOKEN=<LINE_BOT_ACCESS_TOKEN> --restart=unless-stopped -d ghcr.io/kayxue/githubpushwebhooklinebotrust:latest
NOTE若是使用 Cloudflare Tunnel,則
-p 3000:3000
參數可省略,設定時直接填入容器 ip 和端口3000
即可。若出現 host 端口已經被使用的狀況,請將冒號左側的3000
替換成其他可用的端口。
執行成功後會有一串容器 ID,請使用 docker container list
與 docker container logs <container_id>
確認容器正常執行後,即可進行端口映射或者 Cloudflare Tunnel 等設定。
Add Webhook
設定完成後,即可前往需要發送 push notification 的 GitHub 專案頁面,點選 Settings
-> Webhooks
-> Add webhook
進行新增 Webhook: 在新增 Webhook 頁面,請依以下填入相關資訊:
- Payload URL:
<your_server_url>/github
- Content type:
application/json
- SSL verification:請選
Disable
- Which event would you like to trigger this webhook?:請選
Just the push event
確定填入資料皆正確後,即可按下下方 Add webhook
新增 Webhook,確認你剛剛新增的 Webhook 是否成功。
成功之後就可以開始修改你的專案,並且在每一次發生 push 時,都會收到 Line Bot 的通知。
Contribution
此專案歡迎各位進行貢獻,使專案更加完整,貢獻專案時請遵守 Code of Conduct。