CruiseControl.net-在多台构建机器上作为服务运行



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

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

<add key="ccnet.config" value="C:CruiseControlConfigMachine-Name.ccnet.config"/>

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

我的问题是,除了通过ccservice.exe.config文件,是否有其他方法将命令行参数(或告诉ccservice要查看哪个配置文件)传递给ccservice.exe OTHER?我尝试了ccservice.exe/?但我只看到弹出消息,说你必须使用IntstallUtil.exe将CC.net作为服务安装。

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

如果你需要任何进一步的信息,请告诉我
谢谢Richie

你能使用环境变量吗?COMPUTERNAME已经存在。

<add key="ccnet.config" value="C:CruiseControlConfig%COMPUTERNAME%.ccnet.config"/>

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

您可以尝试在ccservice.exe.config之外的文件中具有此特定值。请参阅此问题以供参考:appsettings file属性是否覆盖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:pathtomachine-name.ccnet.config" />
</appSettings>

如果这样做,在设置新机器时,您需要创建local.config和machinename.ccnet.config,但您的ccservice.exe.config不需要在机器之间更改。

相关内容

  • 没有找到相关文章

最新更新