3

CI環境としてBambooを使用しており、いくつかのビルド依存関係があります(手動の依存関係管理と依存関係ブロック機能を使用)。ビルド戦略としてSVNポーリングを使用しており、すべてのプロジェクトのポーリング頻度は同じです。

次のビルドプラン構造があると仮定します。

  • プロジェクトAの親ビルドプランPA、
  • プロジェクトBの子ビルドプランCBはPAに依存しており、依存関係のブロック戦略として「親プランにビルドされていない変更がある場合はビルドをブロックする」を選択しています。

私たちの目標は、次のように依存関係ツリーを設定することです。

  • プロジェクトBをビルドする必要がある場合は、最初にAに変更があるかどうかを確認し、変更がある場合は、最初にPAをビルドしてCBをブロックし、PAが終了したらすぐにCBを再開します。
  • 手動ビルドと自動ビルド(SVNポーリングの結果としてトリガーされたビルド)に対してこれを実行します

上記の目標は、依存関係のブロック機能(http://confluence.atlassian.com/display/BAMBOO/Setting+up+Build+Dependenciesを参照)の目的とまったく同じように見えます。ただし、構成エラーがあるか、この機能を正しく理解していません。

テストするために、次のケースを作成しました。

  • AでクラスDummyClassAを作成します
  • DummyClassAを参照するクラスDummyClassBをBに作成し、プロジェクトBがコンパイルするためにプロジェクトAを最初にビルドする必要があるようにします*手動でCBを呼び出します

上記の構成を通じて、CBは、親プロジェクトに変更があることを認識しているため、CBをブロックし、PAを構築し、CBを再開する必要があると予想していました。しかし、何が起こったのかというと、DummyClassAがプロジェクトBにまだ知られていないため、CBの構築が試みられ、明らかに失敗しました(コンパイルエラー)。CBが手動の場合、親プロジェクトAのSVNのアクティブなチェックがないようです。トリガーされました、それは正しいですか?

ここで何が欠けていますか?このシナリオは事実上すべての深刻なソフトウェアプロジェクトで発生するため、簡単な解決策が必要であると確信しています。したがって、Bambooはこれを箱から出して正しく処理することを期待しています。誰かがこれに光を当てることができますか?

最高、クリス

4

0 に答える 0