Jenkins搭建.NET自動編譯發佈本地環境

最近在作一個團隊項目的時候,用到了自動編譯發佈部署環境【也能夠說是持續集成】,因而順便學習了下這個環境的搭建過程。html

持續集成

  持續集成是一種軟件開發實踐,即團隊開發成員常常集成它們的工做,一般每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。git

一、持續集成系統的組成shell

  一個完整的構建系統必須包括:npm

1) 一個自動構建過程,包括自動編譯、分發、部署和測試等。windows

2) 一個代碼存儲庫,即須要版本控制軟件來保障代碼的可維護性,同時做爲構建過程的素材庫。服務器

3) 一個持續集成服務器。併發

其中1)自動構建和2)代碼存儲庫,都是有相應的軟件配合,開發人員須要的學習成本不高,複雜在各模塊的相互配合,這一期間可能須要大量時間去調試。一旦調試完畢,對於以後工做效率的提高是成倍的。mvc

二、MSBuild分佈式

  自動構建,作.Net開發的同仁相信大多數都會使用VS,而Visual Studio用MSBuild構建.NET項目。svn

MSBuild所需的僅僅是一個腳本,在腳本中指定要執行的target;項目中的.csproj和.vbproj 文件都是MSBuild腳本。當編寫好MSBuild腳本後,只須要一條簡單的命令,便可實現代碼的編譯與測試工做

參考:[獨孤九劍]持續集成實踐 – MSBuild語法入門

雖然MSBuild實現了自動編譯與測試,可是在調用MSBuild時,咱們仍是經過輸入命令進行調用的,這裏摻雜了人工干預的成分,所以要將這部分工做剔除。

三、版本管理

  目前主流的版本管理有傳統的SVN、分佈式的Git和Mercurail各有利弊,自行選擇。

四、Jenkins

  Jenkins是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。

同時 Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。下面將介紹 Jenkins 的安裝與配置。

 Jenkins安裝配置

  Jenkins是一個可擴展的持續集成的引擎,主要用於持續自動的構建、測試軟件項目監控一些定時執行的任務。

個人環境:

機器:Windows Server 2008 R2 Enterprice

開發環境:VS2017

源代碼管理:Git

軟件安裝

1Jenkins

最新的Jenkins 安裝包能夠從這裏下載:http://jenkins-ci.org/

安裝完成後咱們能夠看到在windows服務中多了一個叫Jenkins的服務。

安裝目錄:C:\Program Files (x86)\Jenkins

界面:http://localhost:8080/

2.NET Framework 4.6.1   

https://www.microsoft.com/zh-cn/download/details.aspx?id=49982

3Microsoft Build Tools 2015   

https://www.microsoft.com/zh-CN/download/details.aspx?id=48159

我機器安裝vs2017是已經包含了msbuild(C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe),全部也能夠不用下載。

MSBuild功能是「對.NET項目的源碼進行編譯」,雖然平時咱們使用 Visual Studio 都是圖形界面編譯、發佈程序,但實際上 Visual Studio 是去調用 MSBuild 來進行各類操做的,因此咱們要想讓 Jenkins 也能自動編譯代碼,也要爲它準備一套 MSBuild。

4.NET Framework 4.6.1 Developer Pack   

https://www.microsoft.com/zh-CN/download/details.aspx?id=49978

5NuGet x86 Commandline        

 https://dist.nuget.org/index.html

NuGet 的控制檯程序,在編譯程序以前,先須要使用 NuGet 進行包還原。這個軟件不須要安裝,放在一個固定的位置就行,例如F:\Software\nuget.exe 。

Jenkins->簡單操做

打開控制檯/命令行 - >轉到Jenkins安裝目錄。分別執行如下命令:
中止:jenkins.exe stop

開始:jenkins.exe start

從新啓動:jenkins.exe restart

登陸界面用戶名密碼

若是不記得密碼了,能夠配置爲不使用密碼,以下:

修改安裝目錄下的config.xml文件的節點  <useSecurity>false</useSecurity>

而密碼保存在文件:credentials.xml

jenkins->安裝插件

Git插件獲取源代碼,MSBuild插件編譯.net項目。 

http://localhost:8080/Manager Jenkins => Manage Plugins

Available選項卡中,選中git Plugin安裝。

Available選項卡中,選中MSBuild安裝。

jenkins->全局工具配置/系統設置

http://localhost:8080/configureTools/

 

 

其中 MSBuild Name 能夠隨便。

Path to MSBuild 就是咱們MSBuild在當前電腦的路徑:C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe

對應:VisualStudioVersion=11.0

注:實踐證實,這裏應該要根據使用的開發環境VisualStudio版原本決定。 即對應.NET版本的MSBuild編譯器目錄。

eg:使用VS2017編寫的程序,這裏應該填寫 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe

對應:VisualStudioVersion=15.0

 建任務

回到主界面,而後點擊 New Job, 輸入任務名稱,推薦用英文,咱們選擇構建一個自由風格的軟件項目。

項目名稱:FirstSite

則從git上下載的代碼放置在jenkins服務器的 d:\Jenkins\workspace\FirstSite目錄【即工做目錄 Workspace】下。(注:不必定是d盤,是jenkins 的安裝目錄)       

源代碼管理

源碼管理選擇git,配置咱們的源代碼的路徑和用戶名密碼

 

 MSBuil編譯(介紹)

  有好多種命令方式,主要介紹「windows批處理命令「和」Build a Visual Studio project or solution using MSBuild 「

一、Execute Windows batch command(執行windows批處理命令)

命令舉例:cd %WORKSPACE%\DEV\    npm install

其中 WORKSPACE解釋:The absolute path of the directory assigned to the build as a workspace.(分配給構建的目錄的絕對路徑做爲工做區) 即git文件down下來的路徑(d:\Jenkins\workspace\FirstSite)。

點擊輸入框下方的「可用環境變量」   在Execute shell 或 Execute Windows batch command文本框中使用,使用方法:%變量名%

二、Build a Visual Studio project or solution using MSBuild 

 

 

MSBuild Build File:解決方案的相對路徑。【項目文件或者工程文件的名稱】

.\angularDemo\angularDemo.csproj

注:指定編譯文件時,能夠指定解決方案(.sln)也能夠指定爲項目文件(.csproj),這樣就只針對某個模塊進行編譯。

Command Line Arguments:MSBuild 的命令行參數

MSBuild.exe 用指定的選項生成指定的項目或解決方案文件。

方式一:根據vs項目發佈配置文件來編譯發佈

【能夠分本地發佈和遠程WebDePloy發佈,依據在vs中的發佈方式而定】

/t:Rebuild

/p:Configuration=Release

/p:DeployOnBuild=True;PublishProfile=Testing-Environment-CI-publish 

其中 /t:Rebuild 表示每次都重建,不使用增量編譯

PublishProfile表示使用 Testing-Environment-CI-publish.pubxml 發佈文件來發布項目

 注:/t是/target的縮寫,/p是/property的縮寫,多個屬性間用分號或逗號分隔,最後不須要分號或逗號。

MSBuild 命令行參考

方式二:直接使用MSBuild命令來編譯發佈

參考:

/p: DeployOnBuild=true;

ExcludeGeneratedDebugSymbol=false;

ExcludeXmlAssemblyFiles=false;

SkipExtraFilesOnServer=True;

WarningLevel=4;

NoWarn=1591;

DeployTarget=MSDeployPublish;

MSDeployPublishMethod=WMSVC;

AllowUntrustedCertificate=True;

MsDeployServiceUrl=https://172.xx.yy.zz:8172/msdeploy.axd;

username=WDeployAdmin;

password=yyyyyy;

DeployIisAppPath=test/FirstSite;

Configuration=Dev

解釋:

DeployOnBuild=true 表示啓用編譯併發布

Configuration=Release 表示編譯Release版本

TargetFrameworkVersion=v4.5表示編譯的目標是.NET

PublishProfile指定建立的Profile名稱(不用寫目錄,僅文件名便可,並且不用擴展名)  程序編譯成功後就是發佈到咱們PublishProfile指定的文件夾中

VisualStudioVersion=11.0 表示VS2012

MsDeployServiceUrl  指定發佈服務器鏈接的URL(在IIS站點右鍵啓用Web Deploy發佈來設置的)

DeployIisAppPath  要發佈的位置。Eg:  Test/FirstSite 對應的在iis中是

Username 用戶名。此處的用戶名和密碼,來自站點的IIS裏面設置的windows用戶。

 

 

設置密碼

VS中站點發布

 在VS中右擊項目,發佈

一、發佈方法:選 文件系統

目標位置:E:\IIS_Deploy\FirstSite

 

PublishProfile=CustomProfile1,點發佈會在目標位置生成相應的文件,在iis中配置後便可訪問網站。

設置綁定800端口,訪問:http://localhost:800/FirstSite/Practice/pages/#/

二、若發佈方法選 Web Deploy,則是

 

 

服務器不寫localhost而是寫ip就會要求填寫用戶名和密碼。

這些配置在Jenkins搭建.NET自動編譯發佈遠程環境中會提到。

 MSBuil編譯構建(實際配置)

1nuget包還原

咱們在把項目提交到git或者svn上的時候並不包含這些包,咱們把項目從git上拉到下來後用vs打開,vs會首先來還原這些nuget包,一樣,若是咱們是使用msbuild.exe來構建這些項目,也須要首先還原nuget包,不然項目因爲缺乏依賴而沒法正常編譯,下面咱們就介紹如何使用nuget.exe來還原項目依賴。

在jenkins的項目,配置中,build節中 增長一個bat處理命令:

"F:\Software\nuget.exe" restore "%WORKSPACE%\angularDemo.sln"

指定 nuget.exe 的路徑,而後使用 restore 命令,對當前目錄下的 xx.sln 解決方案【不要用項目csproj】文件進行包還原。

注:bat命令 必需要在Build命令以前。點中拖動,可調換順序。

二、Build配置——發佈到本地

根據前面VS中發佈項目,生成的CustomProfile1 來配置

一、MSBuild Build File:配置爲.\angularDemo\angularDemo.csproj

或者C:\Program Files (x86)\Jenkins\workspace\FirstSite\angularDemo.sln 均可以。

二、Build的命令行參數:

/t:rebuild

/p:DeployOnBuild=true;Configuration=Release;VisualStudioVersion=15.0; PublishProfile=CustomProfile1

構建以後,站點會發布到CustomProfile1中設置的publishUrl的物理路徑下。

常見的構建問題報錯,參考:Jenkins構建常見問題

 

其餘參考:

使用jenkins配置.net mvc網站進行持續集成一

持續集成

相關文章
相關標籤/搜索