團隊合作Git flow與Telegram bot
團隊合作Git flow與Telegram bot
首先我們要讓bitbucket有人push時可以通知我們的server
寫上如下程式在test1.js
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var port = 8000;
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/payload', (req, res) => {
console.log(req.body);
})
app.listen(port,() => console.log(`listening on ${port}`));之後因為我們目前用localhost測試,所以我們架的server如果是在NAT或是firewall下面的話外面沒辦法使用post打入資料,所以我們要用ngrokhttps://ngrok.com/download 這個軟體來讓我們server expose出去給外界
下載好之後解壓縮,之後在他的執行檔下面的同層目錄執行 ./ngrok http 8000 8000為要開放給外界的port
ex:
之後執行後終端機會產生兩組url分別是http與https的,我們把他加入bitbucket的webhook,並且在產生的url路徑後面加入/payload因為我們之後server要接post的路徑是/payload

然後啟動我們剛才寫的server 之後隨意push到bitbucket該repository上即可看到server的log
注意:如果ngrok重新啟動都會產生不同的url所以webhook的url也要更改
如果你是用EC2等虛擬主機或其他public IP則可以直接放入你的ip地址可以不用使用ngrok的服務
因為剛才的程式碼每次hook post過來的東西會包含以前舊的commit但我們只要新的,所以可改為
之後把終端機的object複製到瀏覽器的devtool中,可以比較方便去觀察

結合telegram Bot
先到https://web.telegram.org 申請帳號
之後再左側搜尋框輸入botFather
然後跟他對話,一開始先輸入/start,然後輸入/newbot
再來輸入我們的bot名稱,以及bot帳號
注意帳號不可重複,但有時雖然沒重複還是會出現錯誤
此時重新開啟telegram或是稍等一下再次輸入即可
成功後會出現類似如下,並給我們一個token
使用Node.js與telegram bot溝通
之後我們使用npm install node-telegram-bot-api --save
然後貼上以下程式碼
記得先把token改為你的,然後執行程式
接著到telegram左上選單,點選new group,在輸入框輸入剛才的bot 帳號(username)
然後與這個bot對話,輸入hihi
看一下terminal的console,應該會出現一串數字,此為msg.chat.id
把它貼到上面app.post('/payload')中的bot.sendMessage('', msgPayload);
把第一個參數改為這串數字
最後試著push到bitbucket即可看到telegram出現訊息

Git flow
Git flow 算是我們在管理git branch中的一種實踐
作者有提供一個相關工具,但也可以選擇不使用 https://github.com/nvie/gitflow
流程主要為下面
Last updated
Was this helpful?