去年年底,得益於公司引入 Jenkins,讓我們在持續整合方面邁出了第一步,本文不贅述如何安裝 Jenkins,主要關注點在於配置 .Net 環境。另外本文是在 Windows 環境下安裝的 Jenkins 進行操作。
一、安裝環境
首先我們需要先準備幾個安裝包,將它們安裝到 Windows 上:
.NET Framework 4.6.1 |
https://www.microsoft.com/zh-cn/download/details.aspx?id=49982 |
Microsoft Build Tools 2015 |
https://www.microsoft.com/zh-CN/download/details.aspx?id=48159 |
.NET Framework 4.6.1 Developer Pack |
https://www.microsoft.com/zh-CN/download/details.aspx?id=49978 |
NuGet x86 Commandline |
https://dist.nuget.org/index.html |
第一個當然是大家熟悉的 .NET Framework 運行環境了;
第二是 MSBuild,雖然平時我們使用 Visual Studio 都是圖形介面編譯、發布程式,但實際上 Visual Studio 是去調用 MSBuild 來進行各種操作的,所以我們要想讓 Jenkins 也能自動編譯代碼,也要為它準備一套 MSBuild。
第三個包為 .NET Framework 4.6.1 開發人員包(Developer Pack),在過去稱為 Targeting Pack,裡麵包含了一堆程式集。像是早期版本的 Visual Studio 2013,發布之時並沒有 .NET Framework 4.6.1,要想讓它支援就需要安裝這個開發人員包。如果不安裝的話,後期編譯 4.6.1 的程式時會提示找不到 System.Object、System.Attribute 程式集的錯誤。4.6.1 的開發人員包包含了 4.0、4.5、4.6 Targeting Pack 的內容,安裝 4.6.1 的包就不需要安裝 4.0 其他版本的包了。另外如果需要中文支援,需要先安裝英文版,再安裝中文語言套件。
最後一項為 NuGet 的控制台程式,在編譯器之前,先需要使用 NuGet 進行包還原。這個軟體不需要安裝,放在一個固定的位置就行,例如放在 D:\Tools\CI 下。
二、安裝 Jenkins 外掛程式
進入 Jenkins 的外掛程式管理頁面,安裝 MSBuild 外掛程式,地址為:https://wiki.jenkins-ci.org/display/JENKINS/MSBuild+Plugin
安裝好之後,之後進入 “Global Tool Configuration” 介面:
在開啟的頁面裡找到“MSBuild”一欄,先點擊“MSBuild 安裝”,再點擊“新增 MSBuild” 按鈕,即可配置 MSBuild.exe 的路徑。由於我使用 32 位的 MSBuild,所以可以這樣配置:
MSBuild 的預設安裝路徑
32位 |
C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe |
64位 |
C:\Program Files (x86)\MSBuild\14.0\Bin\amd64\MSBuild.exe |
配置好之後不要忘了儲存。
三、Jenkins Job 配置
準備好了運行環境和 Jenkins 外掛程式,我們建立一個 Job 試一試。我們公司使用的是 Subversion,所以我會從 SVN 下載代碼,使用 Git 等倉庫也大同小異,這裡就略過了。
1. 還原 NuGet 程式包
我們需要在“構建”一欄中,新增一個“Execute Windows batch command”(執行批處理命令)步驟,用來進行 NuGet 包還原
1 D:\tools\CI\nuget.exe restore .\YourSolutionName.sln
首先是指定 nuget.exe 的路徑,然後使用 restore 命令,對目前的目錄下的 YourSolutionName.sln 解決方案檔案進行包還原。大家根據自己實際情況進行修改即可。
2. 配置 MSBuild 編譯參數
依然是在“構建”一欄,建立一個“Build a Visual Studio project or solution using MSBuild”(使用 MSBuild 產生 VS 項目或解決方案)步驟
從上往下,依次是
選用的 MSBuild 版本
目標項目或解決方案檔案的路徑+檔案名稱
MSBuild 參數
這裡主要講一下“Command Line Arguments”的配置,更全面的 MSBuild 文檔可以參閱 MSDN:https://msdn.microsoft.com/zh-CN/library/dd393574.aspx
我希望產生一個 ASP.NET MVC 項目,並發布到檔案系統中,主要用到:
/t:Rebuild 重建
/p:Configuration=Release Release 產生模式
/p:VisualStudioVersion=14.0 指定子工具集(https://msdn.microsoft.com/zh-cn/library/bb383796.aspx)版本,不設定會報錯
/p:DeployOnBuild=True;PublishProfile=Testing-Environment-CI-publish 使用 Testing-Environment-CI-publish.pubxml 發布檔案來發布項目
四、補充
[2017年1月24日09:30更新]
不好意思,昨晚發布文章時遺漏了這一點。如果按上面的配置,使用 MSBuild 編譯項目,可能會遇到這樣的錯誤:
未找到匯入的項目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets”
這時候只需要找一台安裝了 Visual Studio 2015 的電腦,將 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0 目錄裡的所有內容都拷貝到 Jenkins 所在的 Windows 系統的這個目錄下,然後重新構建,就可以了。
後面可能還會發一些有關 Jenkins 整合 xUnit.net 單元測試和自動發布方面的一些內容,不過不知道年前還能不能發出來了 XD
希望文章能對大家有作用。