今天研究並實現一個響應 GitHub Webhooks 實現自動部署的 Web 服務。簡單收拾了下代碼和文檔,開源至此html
這並非一個 Hello Word 教學示例,而是我本身在用的實際項目。假設你已經知道下列技術或知足其條件:node
node lib/index.js
運行後,在 3030
端口提供可響應 GitHub Webhook 的服務exec
來調用實際工做的 shell 腳本(須要本身編寫)均位於 config
目錄,參照 *_demo.json
,添加沒有 _demo
的版本nginx
可爲每一個倉庫、分支建立對應的配置:git
{
"webhook-test_master": { // RepositoryName_BranchName
"secret": "GitHub_Webhook_secret",
"cwd": "/home/jason/testapi/", // 腳本執行目錄
"command": "/bin/bash ./deploy.sh", // 真正工做的 shell 腳本
"env": { // 一些環境變量
"DEBUG": "s:*"
}
}
}
複製代碼
目前主要存儲了 SMTP 配置信息,用於發告知郵件:github
{
"mailConfig": {
"host": "email-smtp.us-west-2.amazonaws.com",
"port": "465",
"user": "user123",
"password": "password123",
"from": "from@gmail.com",
"to": "to@gmail.com"
}
}
複製代碼
關於 GitHub Webhook,記得生成密碼、選擇 json
格式。web
關於 shell 腳本,能夠經過 2>&1
將其中不重要的 warn/error,從 stderr 轉到 stdout 中。shell
關於郵件服務,我開始時用的是阿里雲,但出現了提示發送成功、但實際不破功的狀況,垃圾箱也沒有。後來試了 Amazon SES,目前一切順利;天天 200 封免費郵件額度。json
使用 VSCode 編寫調試,.vscode
配置自己也包含在項目中了。api
若是你遇到了問題,多問問 Google 和本身;我這邊是順暢運行的。bash