1

複数のマシンでさまざまなプロジェクトが構築されているクルーズ コントロール (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 にコミットすると問題が発生します。

私の質問は、ccservice.exe.config ファイルを介する以外に、ccservice.exe にコマンド ライン引数を渡す方法 (または ccservice にどの構成ファイルを参照するかを伝える方法) はありますか? ccservice.exe /? を試しました。しかし、IntstallUtil.exe を使用して CC.net をサービスとしてインストールする必要があるというポップアップ メッセージが表示されます。

CC.net バージョン : 1.5.7256.1 を使用しています。ビルド マシンは Windows 7 Enterprise を実行しています。インテル Core i7-2600K CPU。16GBのRAM。

さらに情報が必要な場合はお知らせください。
ありがとうリッチー

4

2 に答える 2

1

環境変数を使用できますか? COMPUTERNAMEすでにそこにあります。

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

多分それは変数を展開するでしょう、私は試していません。

于 2012-07-16T16:01:13.203 に答える
0

試すことができる1つのことは、ccservice.exe.configの外部のファイルにこの特定の値を含めることです。参考のためにこの質問を参照してください:appsettingsファイル属性は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をマシン間で変更する必要はありません。

于 2012-08-01T15:14:09.057 に答える