大企業では継続的インテグレーションはどのように組織されていますか?


11

私の会社では、各機能/バグ修正ブランチがdevでどのようにマージされるかを確認するために中間ビルドを行わないのが一般的です。毎日のビルドのみがあり、常に多くのテストの失敗とビルドエラーが発生します。私は、1000人以上の開発者がマージごとにビルドするのは理不尽だと言われています。

それで、私はCIがそれ以上の開発者(Microsoft、Facebook)を持っている会社でどのように組織されているかを検索しましたが、何も見つかりませんでした。たぶん、インサイダーは私に言うことができますか?



@gnatあなたは十分ですか?どのように関連していますか?私はインサイダーの経験を求め、たとえば企業を指摘しました。私はカスタマーサポートに尋ねませんでした。
-Megamozg

11
@gnat私はそれがそれとどのように関係しているかわかりません。Megamozg:CIはプロジェクトのモジュール別に編成されており、1000人の開発者がいるモジュールはありません。したがって、人が多すぎる場合は、プロジェクト/モジュールをより小さな部分に削減します。
ウォルフラット

@Walfratは完全に関連しています。このサイトは、大企業のインサイダーの企業がさまざまなことをどのように行っているかについての調査/世論調査を行うためのものではありません。そのようなものに興味がある場合は、これらの企業のサポートチャネルを使用する必要があります
-gnat

@gnatあなたが提供したリンクがどのように適用されたのか、特にWalfratへの応答であなたが提供したコメントについては本当にわかりません。そのコメントに基づいて、このIMHOは適切なリンク(投票タイプの質問に関する部分)になりますsoftwareengineering.meta.stackexchange.com/a/6490
Newtopian

回答:


12

基本的に、スケーリングの問題です。作業をモジュールに分割します。モジュールは、プロジェクトや製品の機能が異なる場合があります。

これらのモジュールのセットをカバーするチームがあります。これらの各チームは、それぞれのスコープにCIサイクルを設定し、それぞれのサイクルが経過した後にのみ、コードがマスターリポジトリにプッシュされ、そこでマスターCIサイクルが実行されます。

マスターCIサイクルは、次の点でおそらくチームレベルのCIサイクルと異なります。

  • チームレベルのCIサイクルでは、会社全体のコードをビルドする必要はなく、担当するモジュールと依存モジュールのみをビルドする必要があります。完全に独立しており、異なるチームにある2つのモジュールがある場合、それらは他のチームのCIサイクルの一部ではありません。
  • チームレベルのCIサイクルでは、マスターCIサイクルよりもはるかに詳細な自動テストを実行できます。マスターCIサイクルには、マスターソリューションのサイズに応じて、これらのテストの実行に24時間以上かかることがあるため、健全性チェックテストと回帰テストが毎日行われます。

このアプローチで行う必要があるのは、開発者がコードをセントラルリポジトリにプッシュするのに膨大な時間を費やさないように、ローカルCIサイクルが過ぎたら、ローカルリポジトリからセントラルリポジトリに自動プッシュを提供することです。


7

@Vladimir_Stokicが言ったことに加えて、一部のチーム(私の開発者は150人まで)では、24時間ごとよりも頻繁にビルドを行います。コミットが発生するたびに、5分間のタイマーを開始します。5分間が経過すると、5分間に発生したすべてのコミットが結合され、ビルドされます。ビルドは通常、増分ビルドです。発生するビルドごとに単体テストを実行する個別のビルダーがあります。ビルドが完了した後、ビルド中にさらにコミットがあった場合(変更内容に応じて1〜45分かかります)、保留中の変更がビルドされます。夜間(クリーン、フル)ビルドもありますが、各コミットで発生するビルドは(大まかに)テストが失敗したかどうかを非常にすばやく知らせます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.