2009-08-26 19 views
11

CruiseControlにはいくつかのプロジェクトがあり、同時に2つ以上のプロジェクトが同時にビルドされていることに気付きました。これは矛盾を引き起こしているようです。多くの場合、ビルドに失敗し、その理由を見ると、ファイルにアクセスできず、他のビルドが完了するまで待つと、失敗したビルドを強制的にビルドするだけで成功します。CruiseControl.NETの同時ビルドを防ぐ方法を教えてください。

どうやってCCが互いに競合してもビルドが実行されないように設定できますか?

答えて

10

では、のキューを使用して、相互に依存するすべてのビルドを実行する必要があります。

クルーズコントロールプロジェクト構成要素は、ビルドの並行性と順序を制御するための2つの属性がありますqueue

<project name="Project 1" queue="Q1" queuePriority="1"> 

をあなたがの順序を定義することができqueuePriorityで、プロジェクトをビルドしなければならないキューする定義することができますいくつかのビルドが要求されたときにビルドされます。

したがって、並列に構築できない2つのプロジェクトは、同じキューにある必要があります。たとえば、queue="Q1"です。 2番目のプロジェクトが最初のプロジェクトに依存する場合、2番目のプロジェクトは最初のプロジェクトより優先度が高くなければなりません。

+0

これは、プロジェクト2を構築することなく、プロジェクトの1を構築することを防ぐのか?あるいは、同じキューに入っているので、両方とも常に構築されますか? –

+0

いいえ、それはトリガーで行われます – JoelFan

7

Locking機能を使用して、同時に実行すべきでないキューを定義することができます。

これはバージョン1.4.3

にドキュメントからサンプル提供されています:

<cruisecontrol> 
    <queue name="Q1" lockqueues="Q2"/> 
    <queue name="Q2" lockqueues="Q1"/> 

    <project name="MyFirstProject" queue="Q1" queuePriority="1"> 
    ... 
    </project> 
    ... 

    <project name="MySecondProject" queue="Q2" queuePriority="1"> 
    ... 
    </project> 
    ... 
</cruisecontrol> 
関連する問題