瞎折騰之Webhooks


  之前聽學長介紹過webhooks,也知道有這個東西,但沒有真正的用於項目部署,長久以來一直過着“刀耕火種”的生活......長久以來,都是這么更新代碼的:

    

 

  由於之前做的項目剛剛上線,需要對其進行持續的維護,而項目所在的服務器只能通過內網登錄,出了校門就不行了,就想起了webhook,決定要搞一下方便后期部署。

  剛開始找到了Bitbucket的官方文檔中的webhooks部分,頭都要大了,但是勉強能看懂些。

  后來參照其它人的部署代碼,琢磨出了自己的一套部署。

  大致流程是這樣的:webhooks可以通過監聽push觸發回調,發送post請求到所指定的地址,服務端收到該請求進行對應的git pull更新代碼的操作。

   

   新建webhook:找到項目的weebhooks。Add new webhook創建一個webhook。Title用以區分不同的webhook, URL是你所指定的POST請求的接口地址(如果還沒有定義好,可以臨時填一個網址如http://baidu.com也可以,后期接口完成后再改),其它默認。點擊save時,webhook會發送一個測試請求,用於測試url的有效性。測試通過后就成功的創建了一個webhook。

  

   構建對POST請求處理接口:以nodejs為例。在服務器上創建webhook的POST請求對應的處理接口。收到請求后就代表開發者向github或bitbucket中push了新的代碼,我們只需要進入項目根目錄,執行git pull origin master(按實際情況填寫,不一定是origin master)拉取代碼更新就ok了。

首先,在express中建立一個路由地址,通過引入一個插件shelljs執行進入目錄,執行更新的shell操作就可以了。對於同步操作,它會返回一個對象,通過判斷對象的code是否等於0來判斷執行狀態。當然了,express是我偷懶的寫法,也可以直接用node的http模塊來處理post請求。

 

   部署:部署的時候,需要讓該服務常駐后台,在這里,推薦forever或者pm2進行部署,易上手。

   測試:代碼部署完畢后,將webhook的url和服務器的url進行比對看是否一致,如果一致了,就可以通過push更新代碼,之后在gitlab/github/bitbucket的webhooks查看對應請求的狀態。

                              (url為測試地址,請填寫自己服務器接口的真實地址)

點擊View requests查看對應的請求狀態。如果返回200OK,代表代碼已經成功更新。

  總結:有了webhook,以后我們部署更新代碼的時候,就只用git push就好了,不用再登錄服務器進行一步步的更新,真是方便多了,也適用於項目部署自動化的一部分吧。

  第一次寫博文,大家有什么意見盡管發表,別噴的太厲害就行。歡迎大神指導。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM