本人作.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中配置發佈失敗郵件發送,添加一些用戶來維護等等.