Cruise Control .Net 服务器无法检测在 Starteam 上所做的修改
Posted
技术标签:
【中文标题】Cruise Control .Net 服务器无法检测在 Starteam 上所做的修改【英文标题】:Cruise Control .Net server unable to detect modifications done on Starteam 【发布时间】:2010-09-23 05:45:54 【问题描述】:我正在使用 Cruise Control .Net 1.4 进行持续集成,并将其安装在我的 Windows 2000 桌面上。我有用于构建的 Nant 0.85。我的源代码控制在 Borland Starteam 2005 中。我安装了用于创建 VB.Net Windows 应用程序的 .Net 2003 框架。我已经安装了 CCNet,并且我认为我的 CCnet.config 文件配置正确。
我面临的问题是,每当我更改任何代码并签入 Starteam 时,CCNet 服务器都不会检测到修改,因此我无法根据修改触发我的构建。为此,我必须依靠 forcebuild。但是对于我的项目来说,每 1 分钟使用一次 forcebuild 是不可接受的。我希望触发器基于修改。 IE。一旦在 Starteam 上检测到更改,就会自动进行构建。
我的 CCNet.config 文件是这样的:
<workingDirectory>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\CCNet17Nov08</workingDirectory>
<webURL>http://172.24.120.37/ccnet</webURL>
<triggers>
<intervalTrigger name="continuous" seconds="120" buildCondition="ForceBuild" initialSeconds="120"/>
</triggers>
<sourcecontrol type="starteam">
<executable>C:\Program Files\Borland\StarTeam Cross-Platform Client 2005 R2\stcmd.exe</executable>
<project>DEL_CA_ROBOTS\Tools\CCNet17Nov08</project>
<username>600513221</username>
<password>car0b0ts</password>
<host>oscar.nat.bt.com</host>
<port>51234</port>
<autoGetSource>true</autoGetSource>
<timeout units="minutes">10</timeout>
</sourcecontrol>
<tasks>
<!-- Configure NAnt to compile the updated files -->c:\
<nant>
<executable>C:\Documents and Settings\uj0011637\Desktop\Cruise Control\nant\nant-0.85\bin\NAnt.exe</executable>
<baseDirectory>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\CCNet17Nov08</baseDirectory>
<nologo>false</nologo>
<buildFile>CCNet17Nov08.build</buildFile>
<logger>NAnt.Core.XmlLogger</logger>
<buildTimeoutSeconds>1200</buildTimeoutSeconds>
</nant>
</tasks>
<!--Publishers will be done after the build has completed-->
<publishers>
<xmllogger>
<logDir>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\Log</logDir>
</xmllogger>
</publishers>
<modificationDelaySeconds>10</modificationDelaySeconds>
我的构建文件是这样的:
<target name="clean" description="Delete all previously compiled binaries.">
<delete>
<fileset>
<include name="**/bin/$project::get-name().dll" />
<include name="**/obj/**" />
<include name="**/*.user" />
</fileset>
</delete>
</target>
<target name="rebuild" dependsontarget="clean, build ">
<zip zipfile="$project::get-name().zip" verbose="true">
<fileset>
<include name="**/bin/*.dll" />
<include name="**/bin/*.exe" />
</fileset>
<fileset>
<include name="*.aspx" />
<include name="*.css" />
<include name="*.config" />
<include name="*.js" />
<include name="*.asax" />
<include name="**.txt" />
<include name="**.vb" />
<include name="**.vbproj" />
<include name="**.user" />
<include name="**.sln" />
<include name="**.suo" />
<include name="**.resx" />
</fileset>
<fileset prefix="SQL">
<include name="*.sql" />
</fileset>
</zip>
</target>
<target name="unit_test" description="Run unit tests.">
<exec program="$nunit.dir\nunit-console.exe" commandline="bin/$prjname.exe /xml=$prjname.xml /nologo" />
</target>
<target name="build.Console">
<solution configuration="release" solutionfile="CCNet17Nov08.sln">
</solution>
<property name="expected.output" value="bin/$prjname.exe"/>
<fail unless="$file::exists(expected.output)">Output file doesn't exist in $expected.output</fail>
</target>
有人可以指导我吗?
【问题讨论】:
【参考方案1】:如果可能的话,您是否尝试过使用 starteam 将文化设置为 <culture>en-US</culture>
?
我在使用 Visual Source Safe 时遇到了同样的问题。唯一的问题是文化设置不正确。
干杯。
【讨论】:
【参考方案2】:试试这个:
在配置文件中更改项目设置
<project>DEL_CA_ROBOTS\Tools\CCNet17Nov08</project>
到
<project>Project_name\View_name</project>
<path>StarteamFolderName</path>
例如,如果您的项目名称是DEL_CA_ROBOTS
,并且视图名称也是DEL_CA_ROBOTS
, 脚本应该类似于 ..
<project>DEL_CA_ROBOTS\DEL_CA_ROBOTS</project>
<path>Tools\CCNet17Nov08</path>
希望对你有帮助。
【讨论】:
【参考方案3】:我并不感到惊讶,我使用过 Star Team 一次,我只能说,我在该存储库工具中必须习惯的垃圾级别只有 Source Safe 在我的整个编程生涯中被超越过。 .
不要使用 Star Team,如果我今天要开始一个大的新项目,我可能会使用 GIT...
【讨论】:
【参考方案4】:我在理解安装和配置 CruiseControl.Net 的文档时遇到了挑战,其中 StarTeam 作为运行 IIS 7 的 Vista 系统中的源控件。最后,我成功地设置了巡航控制以工作。我列出了让它工作的步骤。
第 1 步:从此处获取 CruiseControl.Net 的副本。运行设置。作为安装的一部分,安装程序会安装 ccnet 服务器和 webdashboard。
第 2 步:安装后,要启动并运行 webdashboard,请启动浏览器并输入。 http://localhost/ccnet(这是安装时的默认虚拟目录。它指向构建服务器中的 $InstallFolder/webdashboard 文件夹。如果系统运行的是 IIS5 或 6,那么您将看到一个 CruiseControl.Net 页面,在 IIS7 中,一个抛出 500 错误。要解决此问题,请继续执行步骤 3,如果没有遇到问题,请继续执行步骤 4。
步骤 3:以管理员身份运行以下命令。注意:这里的ccnet是虚拟目录,指向webdashboard在系统中的物理位置。
%SystemRoot%\system32\inetsrv\appcmd 迁移配置“默认网站/ccnet”
命令运行后,只需重新启动 iis 并浏览至http://localhost/ccnet。它应该显示 CruiseControl.Net 仪表板。
第四步:下一步是配置ccnet服务器。打开位于安装目录的“server”文件夹中的 ccnet.config 文件进行编辑。
项目部分:
定义项目部分。项目名称可以是任何标识符,不一定是您的项目名称。 CruiseControl.Net 将使用它来识别您的项目。
源代码控制部分
就我而言,源代码控制是 StarTeam。需要设置各种属性,如登录凭据、项目等。
可执行文件:Star Team 命令行实用程序“stcmd.exe”的路径。
项目:Star Team 中定义的项目名称,必须提取。
用户名、密码、主机、端口:星队服务器连接设置。
路径:必须从 StarTeam 中提取文件的路径。示例:假设 StarTeam 中的项目根文件夹是“Test”。让项目和解决方案文件位于层次结构“Test\TestProject\MyProject”中。要从此位置拉取项目文件和解决方案,请为项目指定“Test”,为路径指定“TestProject\MyProject”。
覆盖文件夹工作目录:Star Team 中的文件将被检出以进行构建的路径。如果未指定,将使用 StarTeam 中指定的原始工作文件夹来提取文件。
自动获取源:将此指定为“true”将允许 CruiseControl.Net 自动从 StarTeam 签出文件
fileHistoryRegEx:我必须更改 Date 正则表达式,因为我的区域设置配置为英语(印度),其中 DateTime 指定为 DD-MM-YYYY HH:MI:SS (IST)。我不得不更改它,因为在运行期间我得到了 Format invalid:System.DateTime 异常。
TimeOut:指定 StarTeam 轮询的超时时间。
以下是 starteam 配置块的完整列表。 星队
明星队
MSBuild 部分
我将 MsBuild 用于构建任务。以下部分说明了获取 CruiseControl.Net 的 MsBuild 设置所涉及的属性。
可执行文件:系统中“MsBuild.exe”文件的路径。
工作目录:要构建的文件的位置。即,StarTeam 提取需要构建的文件的位置。
项目文件:需要构建的.proj文件或.sln文件。
Build Args:指定传递给 msbuild.exe 的其他参数。
目标:要执行的操作。在这里,我希望在解决方案上完成“清洁”和“构建”。
Timeout:如果碰巧调用构建失败,将显示错误消息的时间。
Logger:将用于生成构建结果的记录器程序集的位置。
以下是 msbuild 配置块的完整列表。 微软构建
MS 构建
触发器部分
触发器部分指定必须调用项目构建的时间和条件。在初始设置测试期间,将 buildCondition 设置为“ForceBuild”(强制构建),一旦测试完成,将其更改为“IfModificationExists”(仅在检测到修改时执行构建)。
以下是触发器配置块的完整列表。 触发器
触发器
步骤 5:运行位于 CruiseControl.Net 安装位置的“服务器”文件夹中的 ccnet.exe 应用程序。代码将从 StarTeam 拉到指定的位置,并且应该继续构建。构建结果存储在 $InstallFolder\ProjectName\Artifacts\ms-build.xml 文件中。
希望这会有所帮助。
【讨论】:
以上是关于Cruise Control .Net 服务器无法检测在 Starteam 上所做的修改的主要内容,如果未能解决你的问题,请参考以下文章
MVC .Net 项目在真实服务器上部署时没有“Access-Control-Allow-Origin”标头
如何在 asp.net 中实现“Access-Control-Allow-Origin”标头