淺談.net jenkins svn下自動化集成環境安裝 搭建 配置

  本人作.net研發已有3年多了,以前一直偏向於技術研究,本身學了不少技術,如今忽然發現學了那麼多技術有什麼用呢?真正用到的並很少。windows

  如今?算是一隻小鳥吧,自嘲下.....畢竟我是90後,不少領導對於90後這個詞沒有信任感,相信不少小夥伴都有這樣的體會。服務器

  

  好啦,不說那麼多了,進入正題,第一次寫,有錯指出來,你們一塊兒分享,一塊兒學習編輯器

  首先,你得下載jenkins:https://jenkins-ci.org/content/thank-you-downloading-windows-installer/ 安裝,svn

 

  安裝完成後,它本身會打開jenkins的管理頁面,端口默認是8080(須要修改在jenkins安裝根目錄jenkins.xml中修改端口號便可),ok,繼續,咱們選擇系統管理-管理插件,學習

 

  這時候你的界面可能沒有那麼多插件可選,(可更新、可選插件、已安裝、高級)都點下找到 當即獲取點擊,刷刷頁面坐等ing.....好了以下圖:測試

 

  而後在 可選插件 中找到 MSBuild Plugin,勾上點擊直接安裝,此時自動構建插件已安裝完畢,其實就是調用VS的命令行生成平臺MSBuild,如需發佈插件(根據我的需求,前面的插件是將svn服務器中的最新代碼生成出來,這個插件是發佈,簡單點說就是代替人工copy文件到服務器)請繼續安裝 Hudson Post build task,操做與以前一致,ui

  ok,進入系統管理=>系統設置,在MSBuild節點處點擊 新增MSBuild,填入名稱和MSBuild路徑,MSBuild路徑通常爲C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSbuild.exe,根據需求自行配置。那麼問題來了,服務器裏面沒有安裝VS哪來的MSBuild?其實將開發機上的C:\Program Files (x86)\MSBuild文件夾直接拷貝到服務器中便可,或者你能夠選擇單獨安裝。spa

  ok,保存。.net

 

 接下來開始新建Job插件

 

 

 

在 源碼管理 處選擇Subversion,輸入你的svn地址,若是有賬號密碼點擊 enter credential 輸入,

 

接下來,配置構建:

 

MSBuilder Version 爲以前配置的 MSBuild v4.0.30319

MSBuild Build File 是解決方案文件或者項目文件的名稱

而後就是MSBuild的命令行參數了。

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

/property:Configuration=Release 表示編譯Release版本,

/property:TargetFrameworkVersion=v4.5表示編譯的目標是.NET 4.5版本

咱們先構建測試下,不想測試的能夠忽略。

 

完成後在Console Output中能夠看構建狀況,

 

 

 這裏我碰到一個問題,一直生成失敗,VS能夠正常生成,這裏卻報錯,緣由是我其中一個項目中的引用的爲X86版與該項目的的X64版不一致形成,解決該問題或是在項目屬性=>生成=>Release的生成序列化程序集設置爲關閉

解決錯誤,0個錯誤成功.....

 

繼續,咱們接着配置Job,配置構建後操做(實際爲生成成功後須要作的事情):

 \b0\s+(個錯誤) 是正則檢索0個錯誤

當檢索到0個錯誤後,執行F:\Test\xxxxx\Build.bat 批處理文件,這裏咱們將bat文件放在服務器 jenkins安裝目錄=>workspace=>Test(jenkins Job名稱),或者是直接將bat文件上傳到svn服務器跟解決方案文件放在一塊兒)

Build.bat文件,根據本身的實際編寫, 

我這裏實際作的就是生成出來的文件放置 bat文件所在盤符/TextWeb/Web中,這裏值得注意的是須要 編輯器 自定義,也就是在BBBBBBBBBBB.csproj中添加Name="PublishToFileSystem"  的Target節點

@echo off
cd %~dp0
%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ".\AAAAAAAAAA.sln" /m /t:Clean;Build /p:Configuration=Release /distributedFileLogger if %errorlevel% NEQ 0 echo solution compile failed if %errorlevel% NEQ 0 goto END echo compile is successful, starting deploy echo 1.deleting TextWeb directory rd /s/q TextWeb echo 2.deploying file to TextWeb directory %windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ".\path\BBBBBBBBBBB.csproj" /t:PublishToFileSystem /p:Configuration=Release;PublishDir="..\TextWeb\Web" /distributedFileLogger if %errorlevel% NEQ 0 echo Client deploy failed if %errorlevel% NEQ 0 goto END :END if %errorlevel% NEQ 0 ( if "%autoBuild%" EQU "1" (exit /b %errorlevel%) pause )

 

 

  <Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
    <Error Condition="'$(PublishDir)'==''" Text="The PublishDir property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDir))" Directories="$(PublishDir)" />
    <!--http://msdn.microsoft.com/en-us/library/3e54c37h-->
    <ItemGroup>
      <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
      <!--Dlls in Lib folder, AdminBLL, BLL, BLL config, Custom component service, Repositories-->
      <!--<DllFiles Include="$(MSBuildProjectDirectory)\..\Lib\**\*.*;$(MSBuildProjectDirectory)\Bin\*BLL.dll*.*" />-->
    </ItemGroup>
    <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDir)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="false" />
    <!--<Copy SourceFiles="@(DllFiles)" DestinationFiles="@(DllFiles->'$(PublishDir)\Bin\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="false" />-->
  </Target>

 

大功告成!盡情享受吧~根據需求可在jenkins中配置發佈失敗郵件發送,添加一些用戶來維護等等.

相關文章
相關標籤/搜索