1. 程式人生 > >開源專案福利-github開源專案免費使用Azure PipeLine

開源專案福利-github開源專案免費使用Azure PipeLine

微軟收購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的知識.希望大家多交流,也希望專家大佬們批評指正,多提意見.