[料理佳餚] 使用 Jenkins 執行自動化建置

  • 4549
  • 0
  • CI
  • 2015-12-22

參加完 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"
或者你可以直接在 CI Server 上安裝 Visual Studio

修改 Port Number

由於預設的 8080 已經被我們的 Git Server 用掉了,只好改另一個,只要去修改 C:\Program Files (x86)\Jenkins\jenkins.xml 底下,搜尋 "8080" 把 "8080" 改成自己要的 Port Number 就行了。

修改完成後,到「服務」裡面找到 Jenkins 啟動 Jenkins。

安裝 Plugin

「管理 Jenkins」->「管理外掛程式」->「可用的」,找到下列的 Plugin 後,點擊「直接安裝」,並將「當安裝完成且沒有工作正在執行時,重啟Jenkins」打勾:

  1. Git Plugin
  2. MSBuild Plugin
這邊要特別注意一下,如果在還沒安裝 Plugin 就啟用了 Security,安裝 Plugin 完成後可能會出現 Unable to read C:\Program Files (x86)\Jenkins\config.xml 的錯誤訊息,此時就照著官網上 Disable security 的步驟,將 Security 關掉,再重新啟用 Security。

參考:Disable 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 則是即時輸出的。

 

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學