現在のビルドプロセス
私たちは開発者の小さなチーム(プロジェクトに応じて2〜4人)であり、現在Phingを使用して、稼働前にステージング環境にコードをデプロイしています。コードをSVNリポジトリに保持します。ここで、トランクは現在アクティブな開発を保持し、特定の時間に、テストしてから(成功した場合)、タグ付けしてステージング環境にエクスポートするブランチを作成します。ここでもすべてがうまくいけば、最終的に本番サーバーにデプロイします。アクションは高度に自動化されていますが、常に人間の介入によってトリガーされます。
DOUBT
ここで、プロセスに(ハドソンとの)継続的インテグレーションを導入したいと思います。残念ながら、CIがビルドプロセスに多少干渉し、特定の問題を引き起こす可能性があるため、アクティビティの同期についていくつか疑問があります。
自動化されたCIサイクルには一定の頻度で自動的に実行されるアクションがあることを考えると、「統合」には2つの考えられるケースがあり、それぞれに独自の問題があります。
ケースA:各CIサイクルは、独自の名前で新しいブランチを生成します。このような名前を使用して、コードをSVNからステージング環境に手動で(現在のようにphingを介して)エクスポートします。ここで私が見ている問題は、(特定の対策を講じない限り、IEの削除)、ブランチの数が制御不能になりやすいことです(N分ごとに新しいビルド/ブランチが作成されるように、頻繁にコミットするとします)。 。
ケースB:各CIサイクルは、「current」という名前の新しいブランチを作成します。このブランチは、手動でステージングにエクスポートすることを決定した場合にのみ、一意の名前でタグ付けされます。現在のブランチは、いずれの場合も、次のCIサイクルが開始されるとすぐに削除されます。ここで見られる問題は、誰かが「現在の」ブランチをステージングにタグ付け/エクスポートしているときに新しいサイクルが開始され、一貫性のないビルドが作成される可能性があることです(しかし、私は知らないことを告白しているので、ここでは悲観的すぎますSVNがこれに対する組み込みの保護を提供するかどうか)。
以上のことを踏まえると、上記のアプローチはどれも私たちに完全に満足しているようには見えないので、同じような経験を持つ人がこのテーマについていくつかのヒントを教えてくれるのではないかと思いました。
全体像で完全に省略した重要なものはありますか?ご清聴ありがとうございました&(事前に)ご協力いただきありがとうございます!