微軟收購Github后,很多人猜想微軟可能會砍掉VSTS,然而事實VSTS並沒有砍掉,關於Azure Devops的詳細信息可以查看 這篇博客,如果想查看原文也可以從鏈接里提供的原始地址里查看.
今天要介紹的是做Azure devops的ci部分:Azure Pipeline
. VSTS升級到Azure Devops之后對開源開發者帶來的重大利好消息就是Github開源項目可以免費,無限時和並行運行10個CI/CD作業.
下面將簡要介紹Azure PipeLine以及如何把Azure PipeLine以Github結合,實現自動化構建.
Azure PipeLine簡介
PipeLine字面含義是管道,流水線,正如其字面含義.Azure PipeLine可以把一個構建任務拆分成若干部分,然后串聯起來構成一個流水線作業.根據具體構建業務不同,一個PipeLine可能只包含一兩個步驟,也有可能十幾個甚至幾十個步驟.Azure PipeLine類似於Jenkins PipeLine,與傳統自動構建相比優點在於結構非常清析,構建流水線中的某個環節出現問題很容易定位到(使用過傳統Jenkins自由式任務的同學可能會體會到,對於一些復雜的構建任務一旦出現問題,排查起來非常頭疼,面對着復雜的控制台輸出讓人痛不欲生).當然本節並不會介紹非常復雜的構建知識,而是一個入門教程,以供廣大開源作者和愛好者快速搭建一個流水線構建.
Azure Pipeline 目前支持 Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android, and iOS
,非常令人欣喜的是Azure PipeLine並不需要你具有專業的Devops知識甚至即便你完全不了解Devops也能很方便,快速的搭建一個PipeLine作業.因此,不要猶豫,也不要擔心,果斷嘗試一下.
Azure PipeLine與Github集成,快速搭建一個PipeLine作業.
讀者閱讀本文可以沒有任何自動構建或者Devops開發經驗,但是前提必須要有一個Github賬戶和一個Microsoft賬戶,這兩種賬戶都可以免費注冊,並且也不是很復雜.由於本要已經有賬戶了,因此后面的教程中都假定是已經登陸了github賬戶和Microsoft賬戶.
創建一個Github項目
對於如何在github創建一個項目,這里不再贅述,讀者可以查看相關文章或者Github幫助來獲得相關方面知識.我這里使用我的github倉庫里一個名為 gitShow
的.net項目(讀者可以上傳一個.net項目也可以是支持的其它項目(java,python,nodejs等)到github倉庫,不用擔心項目類型不一樣,我們不需要動手寫一行代碼便可以利用Azure PipeLine強大的功能創建一個簡單的自動構建流水線作業.我的項目結構如下:
在Azure Devops里創建一個Azure PipeLine項目
我們在瀏覽器輸入dev.azure.com
就會進入azure devops界面
如果你沒有登陸,看到的界面可能和上面不一樣,登陸以后,如果你沒有創建任何組織,左邊不會有任何組織列表信息,這時候界面會提示你創建一個組織,你也可以點擊add organization
來創建一個組織,組織相當於一個團隊,一個組織里面可以包含若干個項目.
點擊左側的任意一個組織進入組織,我進入的是截圖里面的最后一個,當然這無所謂,你可以進入任意一個組織.
這是一個空的組織,頁面會提示我們創建一個項目
我們輸入項目名稱,這時候創建項目按鈕激活,我們點擊它便可以創建一個項目.
過一會一個空的項目就生成了,這時候頁面又會提示你創建一個流水線作業
點擊'New PipeLine'按鈕就會進入流水線作業創建頁面
此時頁面會提示你選擇倉庫來源,我們選擇Github
第一個與Github連接會出現授權選擇,這里不要點擊Authorize
,而是點擊下面的Install our app from the GitHub Marketplace
鏈接,進入到插件安裝頁面,這時候會讓你選擇一個組織,根據你的組織不同,這里出現的內容也不相同,選擇一個自己有權限的組織即可
點擊組織名,進入到倉庫選擇頁面
可以選擇所有倉庫或者是指定倉庫,我這里選擇的是所有倉庫,然后點擊'Install'按鈕,過數秒后,會進入一個頁面讓你選擇Microsoft賬戶
點擊賬戶名即可
這時候,如果你選擇的是所有,則會把所有的github倉庫都羅列出來
我這里選擇GitShow
項目,此時Azure Devops平台就會對項目進行智能分析,然后讓你選擇項目類型(也可能沒有這一步,直接進入PipeLine代碼界面),這里Azure Devops自動為我們生成了PipeLine 腳本
然后我們點擊左上角Run
按鈕運行PipeLine腳本,這一步是等待時間最長的
從上圖中我們可以看到PipeLine的執行狀態,有對勾
標識的為已成功執行的步驟,帶有三角
標識的為當前正在執行的步驟,帶有鍾表
標識的為待執行的步驟.等待所有的步驟標識都變成了對勾,整個PipeLine就執行完成了
如果項目最終構建成功,則會出現一個大的綠色對勾
標識整個項目構建成功
我們點擊其中某個步驟,就可以看到當前步驟構建的詳細cli輸出信息,類似於Jenkins cli輸出
在github項目頁面顯示Azure PipeLine構建狀態徽標
如果項目每次構建我們都跳到Azure devops界面去查看,顯然太麻煩了,很多時候我們可能只關心構建狀態,只要構建成功我們便不再看詳細信息,如果失敗了再進入構建頁面查看構建詳細信息.實際上很多開源項目都會有一個構建狀態徽標顯示在項目頁面里,便於直接查看項目的構建狀態.下面我們就介紹如何自己的github項目添加一個Azure PipeLine構建狀態徽標
如上圖,我們點擊左側導航欄里的PipeLines
按鈕,然后點擊Builds
按鈕,出現如下界面
我們點擊...
符號,在彈出的下拉列表里選擇Status Badge
,出現如下界面
最面下是markdown樣例鏈接,我們復制它.然后我們再轉到github,打開自己的項目頁,然后點擊README.md
文件進行編輯(如果讀者的項目里沒有此文件可以添加一個,注意名稱必須是README.md,添加非常簡單,如果沒有github會提示你添加一個,按照提示添加即可),我們把復制的內容添加到README.md
里
然后點擊保存,返回到項目首頁,就可以看到剛添加的構建狀態徽標啦
以上狀態是實時更新的,我們修改一下源代碼,故意制造些錯誤,待Azure PipeLine構建完成后,顯示在Github頁面的狀態就會更新啦
這極大地提升了開源項目的協作效率,如果有用戶提交進來代碼,代碼審閱者可以先看一下構建狀態是成功還是失敗,如果失敗了可以直接讓代碼提交者先把項目構建成功,然后再提交,減少不必要的重復的手動構建工作.
以上顯示狀態徽標只是個簡單的示例,讀者還可以參考其它開源項目的布局,把自己的布局設計的更大方美觀
由於Azure PipeLine剛剛推出,這里僅僅是進行初步嘗試,實際工作中靠自動生成的腳本可能還是遠遠不夠的,需要我們根據自己的項目情況來定制流水線構建方案.但是做為一個開源項目自動構建方案已經夠用了.以后有時間會分享更多結合.net 平台的Devops的知識.希望大家多交流,也希望專家大佬們批評指正,多提意見.