Jenkins持續整合 入門實踐

chy710發表於2018-08-09

本文測試環境: ASP.NET MVC專案,Windows 7環境,SVN程式碼倉庫, MSBuild,TortoiseSVN

持續整合這種工具很多了,Jenkins比較常用,他的原理就是一個服務,有一個管理網站,可以去你指定的程式碼倉庫獲取程式碼檔案,可以設定什麼時候,什麼情況下去觸發,到倉庫獲取檔案。一般的用法是開發者commit程式碼到倉庫時,Jenkins獲取最新的程式碼,編譯生成釋出,執行單元測試等,copy到測試環境(部署),這一整個過程的自動化執行,並且伴隨開發過程中的程式碼提交,這個過程一直在執行,Jenkins就是這樣一個工具。這樣做的目的是,一個專案有N個模組時,每個人只開發自己的一些模組,每完成一次提交,通過持續整合就能檢測整個專案系統的情況,防止等到最後發現某一個模組有問題。試想一下,一個裝置有N個零件組成,當裝置在組裝時已經確認所有零件是合格的,因為每個零件完成時都做了嚴格的測試。如果有零件不合格,到組裝成品時才發現,這個影響就大了。

Jenkins的安裝,沒什麼好說的,官方下載,按跟說明做就行了(需要java環境)。安裝完需要安裝一些外掛,注意Jenkins有N多的外掛可以選擇,我這裡安裝了MSBuild, Subversion等,有些外掛是有依賴項,它會自動安裝相關的依賴。

 

安裝完需要的外掛後,就可以新增任務了。錄入任務資訊,設定原始碼倉庫的位置、帳號,怎麼觸發,怎麼構建等等。

因為我上面只安裝的subversion,這裡會出現一個subversion的選項,配置好專案的SVN地址,SVN訪問帳號等。其它Jenkins下面還有Git等其它外掛。

觸發設定,就是在什麼情況下Jenkins從程式碼倉庫獲取檔案,注意看這裡有好幾個選項,點選?圖示有提示。常見的有Jenkins去輪詢SVN是否有新的提交(SCM),如有則執行;還有一種是在SVN端設定一個觸發鉤子,當有新的提交時通知Jenkins。這裡使用SCM方式,日程表就是輪詢的頻率設定,這個和Linux裡的Contab表示式是一樣的,此處為週一到週五每天的9:00到18:00,每隔5分鐘輪詢一次。

拿到程式碼以後,如何構建,這個就是重點了,我這裡是.NET專案,那就用MSBuild工具來編譯生成了,其它平臺有對應的外掛和工具,關於MSBuild是一個非常強大的命令列工具,可以查詢MSDN或MSBuild /h檢視詳情。

注意看這裡的構建步驟,可以有很多個,你可以根據實際情況,先後順序來做很多步的處理,可以把相關的操作放到一個bat或者ps1指令碼里來處理,我這裡處理步驟是下載完原始碼後,先還源nuget引用 (這裡使用了nuget官方提供的windows上的命令列工具nuget.exe),然後呼叫MSBuild編譯生成。這一步的配置,可以先在命令列測試一下。(後面的釋出,測試,部署我還沒有試)

任務新增完之後,就可以在Jenkins裡自動執行了,或者點選“立即構建”測試一下。

 點選構造記錄,可以檢視本次執行的詳細資訊,還可以看控制檯輸出等資訊。

 

相關文章