參加完 91 大的自動測試與 TDD 實務開發(使用C#)課程之後,對於課程最後小小露臉的 Jenkins,激起了我沉封已久的 CI 魂,以前知道 CI 很好,可以提高軟體及程式碼品質,團隊成員的觀念也有了,但就是缺少那麼最後一哩路 - 工具!?
自從那天與 Jenkins 見面之後,我就無法忘懷它的身影,我決定要立刻擁有它,以下開始是從安裝到第一個建置成功的過程。
安裝 Jenkins v1.615
直接到官網 http://jenkins-ci.org/ 下載安裝即可,也不過就是一路下一步就完成了。
安裝 Git for Windows
我們的版控是用 Git,所以需要安裝 Git for Windows。
安裝 MSBuild 所需的相關 Tools
- Microsoft Windows SDK for Windows 7 and .NET Framework 4
- .Net 4.5.2 Developer Pack
- 從開發機複製
C:\Program Files (x86)\MSBuild\Microsoft
(須包含 Visual Studio 2012 v11.0 的版本) 到 CI Server 的相同路徑底下。
由於我的開發機上沒有 Visual Studio 2012,而 Jenkins 在 Build WCF Project 的時候又去參考了C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\ WebApplications\Microsoft.WebApplication.targets
所以我從我同事的 MSBuild 中複製 v11.0 的版本到 Jenkins 就能 Build WCF Project 了。
- 從開發機複製
C:\Program Files (x86)\Microsoft Visual Studio 12.0\ Common7\IDE\PublicAssemblies\ Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
到 CI Server 的C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2
。
我的專案中有包含 UnitTest Project,所以 Jenkins 在 Build 需要 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll。
- 於 CI Server 註冊 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin>gacutil /i "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2"
修改 Port Number
由於預設的 8080 已經被我們的 Git Server 用掉了,只好改另一個,只要去修改 C:\Program Files (x86)\Jenkins\jenkins.xml 底下,搜尋 "8080" 把 "8080" 改成自己要的 Port Number 就行了。
修改完成後,到「服務」裡面找到 Jenkins 啟動 Jenkins。
安裝 Plugin
「管理 Jenkins」->「管理外掛程式」->「可用的」,找到下列的 Plugin 後,點擊「直接安裝」,並將「當安裝完成且沒有工作正在執行時,重啟Jenkins」打勾:
- Git Plugin
- MSBuild Plugin
Unable to read C:\Program Files (x86)\Jenkins\config.xml
的錯誤訊息,此時就照著官網上 Disable security 的步驟,將 Security 關掉,再重新啟用 Security。啟用 Security
「管理 Jenkins」->「設定全域安全性」->「啟用安全性」->「Jenkins 內建使用者資料庫」->「專案型矩陣授權策略」
設定 Git Plugin
設定 MSBuild Plugin
新增作業
命名:[給這個作業一個響噹噹的名字]
原始碼管理:選擇 Git
因為我需要使用 SCM Polling 的功能,所以在 Additional Behaviours 中將 Force polling using workspace 的行為加進來。
建置:加入所選擇的分支需要建置的 project 或 solution (建置的順序可以拖拉調整)
Demo
儀表板:所有作業會顯示在儀表板上
建置歷程:任選一個作業進入即可看到左邊有建置歷程
Console Output:任選一個建置歷程進入即可看到左邊有 Console Output,可以查看作業建置的狀況,若作業是正在建置中 Output 則是即時輸出的。