日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

持续集成:CruiseControl.NET + VisualSVN.Server

發(fā)布時(shí)間:2024/7/19 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 持续集成:CruiseControl.NET + VisualSVN.Server 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  剛換了工作,有需要搭建一套持續(xù)集成的平臺(tái),做一下總結(jié)。

  首先是我用到的工具:

              

  上面缺少了Microsoft Fxcop,可以用來做代碼校驗(yàn),不過實(shí)際情況暫時(shí)還沒有用到。主要的需求目前是,使用已發(fā)布的穩(wěn)定版本代碼作為新發(fā)布版本代碼的基礎(chǔ),避免有未完成的代碼存在于發(fā)布版本中,同時(shí)自動(dòng)化集成發(fā)布后,上傳該新發(fā)布版本代碼到tags中。elevate一般情況下是不需要的,不過VisualSVN無法使用命令行登陸,可以使用它來提升執(zhí)行權(quán)限,不過最終我使用了另外一個(gè)辦法,這個(gè)方法需要購買VisualSVN Server的License,后面會(huì)說。

  安裝過程就不贅述了,相信有興趣看這個(gè)的都是做軟件的,下一步之類還有一些選項(xiàng)什么的沒什么可說的。安裝的時(shí)候部署的監(jiān)控網(wǎng)站可能不成功,只要自己手動(dòng)在IIS上布下就好。另外,先提一句CCTray是可以把配置好的集成方案服務(wù)添加運(yùn)行的工具,添加好后本身也具有監(jiān)控的功能,區(qū)別是它客戶端工具。

  先說SVN服務(wù)器,VisualSVN Server是比較簡單的SVN服務(wù)端,所以功能比較簡單,比如就缺少命令行登陸的功能,不過另一方面就是安裝很簡單。有兩點(diǎn)需要說明一下,一是新建Repository時(shí),勾選分為branches tags trunk三個(gè)目錄,分別用來放分支代碼,發(fā)布版代碼,主干版本代碼,其中tags下的代碼是只能新增不能修改的;另外一點(diǎn)是權(quán)限問題,我使用的是windows的賬戶做操作的,在這種情況下,有個(gè)選項(xiàng)要勾選上,不然執(zhí)行svn提交代碼命令時(shí),會(huì)報(bào)錯(cuò)身份驗(yàn)證不通過。

                      

  上圖紅框就是需要勾選的,不過勾選這個(gè)是需要License的。

  接下來就是主題部分了,安裝完CC以后,到開始菜單里找到對(duì)應(yīng)的菜單,會(huì)發(fā)現(xiàn)里面有個(gè)配置文件,對(duì)應(yīng)的就是安裝好的目錄下的ccnet.config文件,另外還有個(gè)驗(yàn)證工具,可以用來輔助配置,一目了然的東西就不細(xì)說了,下面說說配置。

<cruisecontrol xmlns:cb="urn:ccnet.config.builder"><!-- This is your CruiseControl.NET Server Configuration file. Add your projects below! -->
這里配置服務(wù)的名字,一個(gè)project對(duì)應(yīng)的就是一個(gè)集成方案,可以獨(dú)立執(zhí)行<project name="ProjectTest"description="demoproject showing a small config" queue="Q1">
工作使用的目錄<workingDirectory>D:\Store</workingDirectory>
這里是正在集成工程中的臨時(shí)配置文件保存的地方,一次執(zhí)行結(jié)束后,該配置文件會(huì)被放到配置的日志文件夾中
   <artifactDirectory>D:\Store\Artifacts</artifactDirectory><!-- specify a state folder to prevent CCNet from saving it in Program Files\CruiseControl.NET\server programs may not standard write their data in it on windows Vista and up)--><state type="state" directory="D:\Store\State" /><!-- specify a artifactDirectory to prevent CCNet from saving it in Program Files\CruiseControl.NET\server programs may not standard write their data in it on windows Vista and up)--> 這是監(jiān)控頁面
<webURL>http://localhost:90/ViewLatestBuildReport.aspx</webURL><modificationDelaySeconds>10</modificationDelaySeconds><triggers><!-- check the source control every X time for changes, and run the tasks if changes are found --><!--<intervalTriggername="continuous"seconds="30"buildCondition="IfModificationExists"initialSeconds="5"/>--><intervalTrigger name="continuous" seconds="6000" /></triggers>
這里是配置獲取源碼的位置,使用svn<sourcecontrol type="svn"><executable>C:\Program Files\VisualSVN Server\bin\svn.exe</executable><trunkUrl>https://aaa/svn/Test/trunk</trunkUrl><username>svn</username>--登陸svn使用的用戶名密碼,這個(gè)是我在測試服務(wù)器上創(chuàng)建的測試賬戶<password>svn</password><workingDirectory>D:\Store\Code</workingDirectory>--獲取下來源碼的存放位置<autoGetSource>true</autoGetSource></sourcecontrol><tasks><!-- if you want the task to fail, ping an unknown server -->
這個(gè)ping的作用在這里僅僅是測試的時(shí)候,改成錯(cuò)的可以讓它后面的配置都不執(zhí)行<exec><executable>ping.exe</executable><buildArgs>localhost</buildArgs><buildTimeoutSeconds>15</buildTimeoutSeconds><description>Pinging a server</description></exec>這里是編譯解決方案的配置,也可以每個(gè)項(xiàng)目分別編譯,projectFile配置成項(xiàng)目的csproj文件就可以 <msbuild><executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable><workingDirectory>D:\Store\Code</workingDirectory><projectFile>D:\Store\Code\*******.sln</projectFile><buildArgs>/noconsolelogger /p:Configuration=Release;OutDir=D:\Store\Run\ /v:diag</buildArgs><logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger><targets>Build</targets><timeout>900</timeout></msbuild>這是用來配置發(fā)布位置的,sourceDir是生成的位置,publishDir是發(fā)布的位置可以配置成遠(yuǎn)程的共享目錄
<buildpublisher><sourceDir>D:\Store\Run</sourceDir><publishDir>D:\Store\Release</publishDir><useLabelSubDirectory>false</useLabelSubDirectory></buildpublisher><!--刪除.svn文件--> 這個(gè)批處理文件時(shí)用來清除代碼中svn綁定的,因?yàn)檫@份代碼需要提交到Tags上,這個(gè)批處理代碼類似的網(wǎng)上到處都是我就不貼了
<exec executable="D:\Store\delSVN.bat" />
這段注釋掉的是單元測試的配置,不過由于原來的代碼都沒做單元測試,所以就先注釋掉了<!--刪除單元測試結(jié)果文件,否則不會(huì)創(chuàng)建新的結(jié)果文件<exec executable="D:\Store\delTestResult.bat" />--><!--buildArgs:參數(shù),/testcontainer:單元測試項(xiàng)目程序集(可以包含多個(gè)) /resultsfile:測試結(jié)果文件<exec><executable>C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe</executable><baseDirectory>D:\Store\UNTest</baseDirectory><buildArgs>/testcontainer:TestProject\bin\Debug\TestProject.dll /resultsfile:TestResults\mstest-results.xml</buildArgs><buildTimeoutSeconds>300</buildTimeoutSeconds></exec>-->提交代碼的批處理:

cd /d %~dp0
"C:\Program Files\VisualSVN Server\bin\svn.exe" import -m "New Tags" D:\Store\Code https://aaa/svn/Test/tags/Tags_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%

<!--提交Tags代碼--><exec executable="D:\Store\svnCTags.bat" /></tasks><publishers> 這個(gè)是完成后全部的日志
<xmllogger logDir="D:\Store\Log"/> 日志可以配置成發(fā)送郵件,不過這里不需要</publishers></project>第二個(gè)集成服務(wù)
<project name="ProjectTestWithOutGetSource"description="demoproject showing a small config" queue="Q1"><workingDirectory>D:\Store</workingDirectory><artifactDirectory>D:\Store\Artifacts</artifactDirectory><state type="state" directory="D:\Store\State" /><webURL>http://localhost:90/ViewLatestBuildReport.aspx</webURL><modificationDelaySeconds>10</modificationDelaySeconds><triggers><intervalTrigger name="continuous" seconds="6000" /></triggers><sourcecontrol type="svn"><executable>C:\Program Files\VisualSVN Server\bin\svn.exe</executable><trunkUrl>https://aaa/svn/Test/trunk</trunkUrl><username>svn</username><password>svn</password><workingDirectory>D:\Store\Code</workingDirectory><autoGetSource>true</autoGetSource></sourcecontrol><tasks><!-- if you want the task to fail, ping an unknown server --><exec><executable>ping.exe</executable><buildArgs>localhost</buildArgs><buildTimeoutSeconds>15</buildTimeoutSeconds><description>Pinging a server</description></exec><msbuild><executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable><workingDirectory>D:\Store\Code</workingDirectory><projectFile>D:\Store\Code\*******.sln</projectFile><buildArgs>/noconsolelogger /p:Configuration=Release;OutDir=D:\Store\Run\ /v:diag</buildArgs><logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger><targets>Build</targets><timeout>900</timeout></msbuild><buildpublisher><sourceDir>D:\Store\Run</sourceDir><publishDir>D:\Store\Release</publishDir><useLabelSubDirectory>false</useLabelSubDirectory></buildpublisher><!--刪除.svn文件--><exec executable="D:\Store\delSVN.bat" /><!--提交Tags代碼--><exec executable="D:\Store\svnCTags.bat" /></tasks><publishers><xmllogger logDir="D:\Store\Log"/></publishers></project></cruisecontrol>

最后是我集成使用的測試目錄,可以不用自己創(chuàng)建,集成過程中會(huì)自己創(chuàng)建的

                    

?

轉(zhuǎn)載于:https://www.cnblogs.com/saaav/p/4003254.html

總結(jié)

以上是生活随笔為你收集整理的持续集成:CruiseControl.NET + VisualSVN.Server的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。