基於Jenkins快速搭建持續集成環境.(Jenkins+tortoisesvn+MSBuild) ...
看了園友張善友的博文,嘗試成功.便有此作.原網址:http://www.cnblogs.com/shanyou/p/3750714.html
天下事有難易乎?為之,則難者亦易矣;不為,則易者亦難矣.
首先要學會使用MSBuild構建腳本
附網址:http://www.infoq.com/cn/articles/MSBuild-1.
目標:學會用MSBuild編譯程式,主要用於asp.net 或者 asp.net mvc.
最終,我寫的腳本如下:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <BuildArtifactsDir Include="UI\bin\" /> <SolutionFile Include="HelloCI.sln" /> </ItemGroup> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <BuildPlatform Condition=" '$(BuildPlatform)' == '' ">Any CPU</BuildPlatform> </PropertyGroup> <Target Name="Init" DependsOnTargets="Clean"> <MakeDir Directories="@(BuildArtifactsDir)" /> </Target> <Target Name="Clean"> <RemoveDir Directories="@(BuildArtifactsDir)" /> </Target> <Target Name="Compile" DependsOnTargets="Init"> <MSBuild Projects="@(SolutionFile)" Targets="Rebuild" Properties="OutDir=%(BuildArtifactsDir.FullPath);Configuration=$(Configuration);Platform=$(BuildPlatform)" /> </Target> </Project> <!--msbuild HelloCI.msbuild /t:Compile /p:VisualStudioVersion=12.0 -->
腳本的最後一行註釋,是構建的命令./p:VisualStudioVersion=12.0是指明版本,如果不指明會報錯,找不到某文件.
Jenkins+tortoisesvn+MSBuild做到持續集成
附Jenkins的使用:http://www.infoq.com/cn/articles/MSBuild-2
先大概閱讀上面的網址對應的文章.註意:我用的版本控制器是tortoisesvn;此外,post-commit的鉤子我也會說明.
1.安裝Jenkins(穩定版本即可),裝好後 進入左側 系統管理,點擊 管理插件, 安裝MSBuild插件.
2.使用Jenkins新建一個自由風格的軟體項目.配置如下:
主要是配置svn的地址和賬號密碼;構建觸發器不用選,後面會用鉤子.
然後是構建,配置如下:
HelloCI.msbuild是構建腳本的文件名.其次,參數是一定要填的.
其他的不用理,直接保存.
項目列表,如下圖:
此時,用svn上傳一個項目(不包含bin),項目根目錄要有HelloCI.msbuild這個文件.
上傳完成後,點擊 上圖中的 立即構建 .用IIS等軟體看網站是否可以訪問.
如果成功,下一步就是如何觸發構建.畢竟,每提交一次,就去伺服器立即構建一次,是重覆動作.要用觸發構建'封裝'.
用tortoisesvn的post-commit鉤子觸發構建
首先,要明白一點.在Jenkins的項目列表裡,除了點擊 立即構建 .還可以通過訪問
http://localhost:8080/job/JOBNAME/build?delay=0sec(JOBNAME需要替換成真實的job名稱),讓Jenkins啟動構建。(請自己測試,通過後,繼續看下邊的.)
tortoisesvn的鉤子設置如下:
HelloCIHook.exe是什麼呢?你應該可以想到了,就是一個小程式,執行它會訪問能觸發構建的url.
代碼如下:
class Program { static void Main(string[] args) { const string url = "http://localhost:8080/job/HelloCI/build?delay=0sec"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "GET"; req.KeepAlive = false; req.GetResponse(); } }
到這兒就結束了.
總結下流程,用svn提交代碼後,鉤子觸發HelloCIHook.exe這個程式,該程式訪問了一個url,進而觸發了Jenkins的構建(執行的MSBuild構建腳本).Jenkins以最新的代碼庫進行了構建,生成了bin(也可以是其他)目錄下的文件.網站成功更新.