1. 程式人生 > >Jenkins搭建.NET自動編譯釋出本地環境 使用jenkins配置.net mvc網站進行持續整合一

Jenkins搭建.NET自動編譯釋出本地環境 使用jenkins配置.net mvc網站進行持續整合一

 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版本來決定。

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 

使用 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=offline.dev.wingontravel.com/ferry;

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中右擊專案,釋出

1、釋出方法:選 檔案系統

目標位置:E:\IIS_Deploy\FirstSite

 

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

設定繫結800埠,

訪問:http://localhost:800/FirstSite/Practice/pages/#/

2、若釋出方法選 Web Deploy,則是

 

 

伺服器不寫localhost而是寫ip就會要求填寫使用者名稱和密碼。

這些配置在下一篇文章,IIS中“遠端釋出配置和WebDeploy安裝配置”中會提到。

 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命令之前。點中拖動,可調換順序。

2、Build配置——釋出到本地

根據前面VS中釋出專案,生成的CustomProfile1 來配置

1、MSBuild Build File:配置為

.\angularDemo\angularDemo.csproj

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

2、Build的命令列引數:

/t:rebuild

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

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

 

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

其他參考:使用jenkins配置.net mvc網站進行持續整合一