@Larsの回答に沿った詳細を次に示します。
ワークスペース内の別のディレクトリにすべてのブランチをチェックアウトするトリガー ジョブ ( Triggerと呼びましょう) を作成します (ちなみに、オプションを使用してワークスペース内にこれらのディレクトリを手動で作成すると--depth=empty
、Subversion プラグインは引き続き変更を検出しますが、検出しません。コードをチェックアウトすると、多くのブランチがある場合にスペースを節約できます)。
その後、どのブランチ (または複数のブランチ) が実際に変更されたかを確認するビルド ステップとしてトリガーが呼び出すスクリプトでSNV_REVISION_n
( n
1、2 など。Subversion プラグインのドキュメントを参照) を使用できます (もちろん、結果を保存する必要があります)。 、次のトリガービルドで使用されます)。
次に、ブランチ名をパラメーターとして受け取るジョブ ( Workerと呼びましょう) を 1 つだけ作成します。トリガーは、適切なパラメーター (ブランチ名など) を指定して wget または curl を使用して http 経由でワーカーを呼び出します。
または、ブランチごとにトリガージョブを作成し、パラメーター化されたトリガー プラグインを使用してワーカーを呼び出すこともできます。欠点は、ブランチごとにトリガーを作成する必要があり、SVN ポーリングが増えることです ( SVN pushを使用しない場合)。一方、
変更されたブランチをチェックするスクリプトを作成する必要はなく、 Blame Subversion Pluginを使用して変更セットをトリガーからワーカーに伝達できます(そのブランチに関連する変更のみ)。
ワーカーは、パラメーターとして渡されたブランチを手動で更新/チェックアウトし (svn co
など)、ビルドします。
このようにして、実際の重い作業を行うジョブが 1 つだけになります (つまり、メンテナンスが容易になり、バグが少なくなるなど)。
私はビルドシステムでこの方法を採用しています。一度に 2 つ以上のアクティブなブランチがないため、ブランチごとのトリガー アプローチを使用します。