團隊合作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?