CruiseControl.net - 作为多个构建计算机上的服务运行

时间:2012-07-12 23:06:25

标签: windows svn windows-services cruisecontrol.net cruisecontrol

我安装了Cruise Control(v1.5.726),并在多台机器上构建了各种项目。每台机器构建它配置为运行的任何项目,如果构建成功,则将输出的副本放在Web服务器上,以便可以在内部访问它。我有一个包含“黄金”(已知工作)CC.net安装的SVN分支,所以当我想添加另一个构建机器时,我需要做的就是将SVN分支同步到该机器并创建一个调用的批处理文件ccnet.exe,然后引用.ccnet.config文件,该文件包含每台机器负责构建的项目列表。

昨天我想出了如何将CC.net设置为Windows服务,但我似乎无法像使用ccnet.exe一样将任何参数传递给ccservice.exe。我能够让ccservice.exe加载机器特定配置的唯一方法是在ccservice.exe.config文件中添加一行,引用回机器配置。例如

<add key="ccnet.config" value="C:\CruiseControl\Config\Machine-Name.ccnet.config"/>

现在,考虑到我有多台构建机器并且配置文件是通过SVN存储的事实 - 将ccservice.exe.config提交回SVN会导致问题,因为它会引用一台机器的配置文件。 / p>

我的问题是 - 有没有办法将命令行参数(或某种方式告诉ccservice要查看哪个配置文件)到ccservice.exe OTHER而不是通过ccservice.exe.config文件?我试过ccservice.exe /?但我只是看到弹出消息,说你必须使用IntstallUtil.exe来安装CC.net作为服务。

我使用的是CC.net版本:1.5.7256.1 构建计算机正在运行Windows 7 Enterprise。英特尔酷睿i7-2600K CPU。 16GB RAM。

如果您需要任何进一步的信息,请与我们联系 谢谢 里奇

2 个答案:

答案 0 :(得分:1)

您可以使用环境变量吗? COMPUTERNAME已经存在。

<add key="ccnet.config" value="C:\CruiseControl\Config\%COMPUTERNAME%.ccnet.config"/>

也许它会扩展变量,我没试过。

答案 1 :(得分:0)

您可以尝试的一件事是在ccservice.exe.config之外的文件中具有此特定值。请参阅此问题以供参考:Does the appsettings file attribute override what is in the app.config?

我认为您的ccservice.exe.config看起来像

....
<appSettings file="local.config">
  <add key="service.name" value="CCService" />
  ... other existing keys in appSettings ...
<appSettings>

然后local.config看起来像

<appSettings>
  <add key="ccnet.config" value="C:\path\to\machine-name.ccnet.config" />
</appSettings>

在设置新计算机时,您需要创建local.config和machine-name.ccnet.config,但您的ccservice.exe.config不需要在计算机之间进行更改。