[DevOps自動化-8] 透過VSTS喚醒Jenkins

透過完整的VSTS和Jenkins的協作,讓PR被核准後,自動觸發Jenkins排程,將產品發布到所有站點。

前言

前面分享了Jenkins的持續整合、持續發布、編譯、測試並產出測試報表的功能,但應該總覺得還是差了那麼一點點,不算是真的自動化。沒錯,因為每個行為都必須登入Jenkins頁面並點"馬上建置"的按鈕才能實際執行後續我們定義好的動作。所以簡單來說,目前已做到了一鍵自動化的功能,可身為一個擁有專業程式設計師美德(懶)的阿宅,我可是連按這一下按鈕都不想做!所以,本篇要分享的就是如何讓程式開發人員Pull Request程式碼,且Code Reviewr審核通過後就直接喚醒Jenkins執行後續一連串的發佈動作。

 

設定VSTS Hook

登入VSTS,並點選已經建立好的專案,會看到下列畫面,請點選右上角齒輪,選擇Service Hooks並點選+按鈕,如下圖所示。

選擇Jenkins的Service,並按下Next。

接下來選擇觸發的事件,共有分三個

  • Build Complete =>建置完成時( 後續會探討如何建立一個Build)
  • Code Push  =>程式碼推送時觸發
  • Pull request merge commit created => 當PR被核准合併會指定分支時觸發

如果是要觸發持續發布(CD)流程,會選第三種類型(Pull request merge commit created),接下來,建議最少要指定Respository和Target branch,另外兩個用Any沒甚麼太大問題。下面optional的選項都是下拉選單,因此,只需要選一選即可,在設定上相當容易,選擇完成後,按下Next。

接著設定Jenkins,Jenkins base URL是登入到Jenkins頁面的URL位址,Username和Passowrd是登入的帳密,Build是在Jenkins的專案名稱,integration level使用預設的即可,設定完成請按Finish。

設定完成後,如下圖所示,接下來在每次Pull Request被核准後,就會觸發Jenkins指定的專案進行建置,達到完全自動化的效果。

 

小結

到這裡為止,已經完成了整個自動化的流程,但沒有設定Build以及分支合併的Policy,只能說,這是一個自動化流程,一切卻仍是假象,因為假如有天兵簽入錯誤的程式碼,Code Reviewer又沒及時發現,那這個自動化流程會是個夢靨,會造成即時發布的產品變成一個不可用的狀態(當然是測試環境),而假如開發人員又沒在測試環境測試,接下來正式環境,一切都掰掰了....當然是還沒那麼慘,透過Git強大的版控支援,和自動化流程本身的威力,降回前一個版本也是彈指之間的事。

但為了避免造成不好的使用者體驗,如能在程式碼簽入之前,就已經通過最基本的檢核,包含編譯、程式碼掃描、自動測試,來確保產品的健壯性,以及了解目前產品的品質是呈現向上循環還是向下沉淪,都是產品成功與否的重要指標,而這也將是下一篇想要分享的主題。