6

大規模な (1 ~ 2MLOC) ソフトウェア開発プロジェクト向けの継続的なビルド製品に関する推奨事項が必要です。特徴:

  • ClearCase リビジョン管理
  • 約 80% C++; 15% ジャワ; 5% スクリプトまたは低レベル
  • Green Hills Integrity OS 用にコンパイルしますが、一部のウィンドウと JVM チャンクもコンパイルします
  • ほとんどが組み込みシステムです。いくつかの UI 部分といくつかの開発サポート (シミュレーション ツール、構成ツールなど) も含まれています。
  • 成果物の概念上の各「バージョン」には、多数のボード、UI マシンなどの展開イメージが含まれています (最大 10 の個別のイメージ、5 つの個別のオペレーティング システム)。
  • 特に、さまざまな異なるボード サポート パッケージ用に構築された多数の同時バージョンを維持/追跡する必要がある
  • ビルド サイクル タイムはプロジェクトの主要な問題であり、これに対処するのに役立つ機能のサポートが必要です (ほとんどの場合、ビルド マシンの大規模なファームを管理する必要があると思います..)
  • セキュリティで保護された環境で動作します (これは政府のプログラムです) (追加するために編集: これは機密プログラムです。ビルド インフラストラクチャのアウトソーシングは開始できません。)

あなたが提供する可能性のあるベスト プラクティスまたは周辺のガイダンスに関心があります。ビルドの自動化の問題は、プログラムに欠けているように見えるいくつかの重複するベスト プラクティスの 1 つですが、ビルド インフラストラクチャの部分と直接関連する観察に焦点を当てた回答を維持するようにしてください。

コストは重要な問題ではありません。スケーラビリティと既存のインフラストラクチャへの改造の容易さが重要です。

(@Dan のコメントに対処するために編集されました。;-)

4

3 に答える 3

3

同様のシステムでの私の経験から、この問題には約2つの部分があります。

  • 少数のコマンドライン呼び出しを使用して、ソースをチェックアウトし、ソフトウェアをビルドし、テストするための反復可能な方法(ビルドだけでなく継続的なテストも実行する場合)。

  • ビルドファーム内のさまざまなサーバーでこれらのコマンドラインを呼び出す手段。

後者の場合、BuildBotを使用していますが、これはかなりうまく機能しているようです。

前者の場合、単純なbashシェルスクリプトとして始まり、かなり大幅に成長した自家製のソリューションがあります。経験から、bashではなくpythonから始めることをお勧めします。実際にプログラムを呼び出すよりも、セットアップと構成の処理にはるかに多くのコードを費やすことになります。(また、それを実行している場合は、Windowsで実行する方がおそらく簡単です。)

スクリプトの有用性において本当に重要であることがわかったのは次のとおりです。

  • 装甲艦の再現性。ビルドツールの標準セットがあり、スクリプトは環境変数をスクラブすることから始まります。コマンドラインオプションはほとんどありません。すべてが構成ファイルに入り、それらはバージョン管理に入ります。

  • ロギング。ビルドスクリプトが実行するすべてのコマンドのログを生成します。

  • 構成ファイルの継承。当社のソフトウェアの各バリアントは構成ファイルを取得し、それらのファイルには、より一般的な設定(さらに一般的な設定を含む)を含めることができます。

  • 拡張性。新しいソースコンポーネントを追加するとき、そのコンポーネントを構築するための一連の命令を追加するのは非常に簡単です(そして、命令は任意のbashコードにすることができます)。ここでは、「任意のコードである可能性がある」部分がおそらく重要です。既存の製品で、大規模で複雑な実世界のシステムに必要な風変わりなことをすべて実行できるようになることはありません。

適度に単純なスクリプトから始めて、必要に応じて有機的に成長させることができます。正直なところ、私たちの結果は少し厄介ですが、重いトップダウン設計の場合よりもはるかに使いやすい結果が得られたと思います。

于 2010-12-21T22:55:20.927 に答える
2

コストはオブジェクトではありませんか?私は GreenHills で働いており、社内のビルド/テスト ファームでこれらの問題を解決しました。あなたのために同じことをするように彼らに依頼してください。

于 2010-12-21T19:35:27.113 に答える
2

ビルド システムでスケーラビリティやセキュリティなどに重点が置かれているのを見ると、エンタープライズ クラスのビルド システム / CI システムの候補になるのではないかと考え始めます。便利なことに、あなたもそれらを買う余裕があるようです。1 年前のSD Times の記事では、エンタープライズ レベルとチーム レベルのビルド ツールの基本的な内訳が示されています。

私の会社はAnthillProを作成しており、大規模な組み込みプロジェクトや非常に安全なプロジェクトで多くの企業と協力してきました。IBM はおそらく、BuildForge の分野で最大の他のプレーヤーです。

AnthillPro は、ビルド後の数分/時間/日でのイメージの処理に特に重点を置いています (シミュレーター/ハードウェアにインストールして、自動テストを実行しますか? ステージングしますか? それらを宣伝しますか?)。ビルドするだけです。

于 2010-12-22T15:11:15.087 に答える