継続的な統合-毎回デバッグとリリースをビルドしますか?


8

各プロジェクトのデバッグおよびリリースバージョンをビルドするために継続的インテグレーションサーバーを設定するときの標準的な方法ですか?ほとんどの場合、開発者はデバッグモードのプロジェクト構成セットを有効にしてコードを記述し、異なるライブラリパス構成、コンパイラー定義、またはデバッグ/リリース間で異なるように構成された他の項目があり、それらが異なる動作をする可能性があります。

各プロジェクトのデバッグとリリースの両方をビルドするようにCIサーバーを構成しましたが、考えすぎているのではないかと思います。私の仮定は、迅速なフィードバックを得ることができる限りこれを行うことであり、それが発生したら、おそらくリリースを夜間ビルドにプッシュします。これにアプローチするための「標準的な」方法はありますか?


programmers.stackexchange.com/questions/55946/…は、これらの回答を確認する価値のある同様の質問です。
JBキング

3
どちらかと言えば反対の方向に進みます-ドロップしたい場合は、デバッグバージョンではなくリリースバージョンを毎回ビルドする必要があります
Murph

ビルドするのはリリースビルドだけだと思います。問題は、デバッグもビルドすることです。
Darian Miller

回答:


9

両方の構成を構築しても問題はありませんが、(特にビルド時間の制約があるため)選択する必要がある場合は、リリース構成を構築します。

最終的には、顧客が使用する構成を構築、テスト、パッケージ化、および展開し、顧客が実行する前に構成に関する問題を発見する必要があります。


8

リリースのみ。

とにかく開発者がデバッグビルドを行っており、最悪のバグは「デバッグで機能する」バグであると想定します。それらをすばやく見つけて、みんなを幸せにする可能性のある変更を絞り込むことができます!


コンポーネントが1つしかない場合は、そうです。複数のコンポーネントがある場合、特定のコンポーネントをしばらくの間誰も試さないで壊れるリスクがあるため、すべての構成で少なくとも毎晩すべてをビルドする必要があります。
Jan Hudec 2012

1
@JanHudec-デバッグビルドのテストの価値は何ですか?リリースが機能してもデバッグが機能しない場合、それはバグですか、それともデバッグの結果ですか?
マーティンベケット

@MartinBeckett:デバッグバージョンで実際の問題をデバッグする必要がある次の人にとっては、非常に厄介です。特にそれが数週間後のときは、複数のコンポーネントがある場合はかなり可能です。
Jan Hudec 2012

4

一晩でできれば両方をビルドしてテストすることを強くお勧めします。

  • いくつかのheisenbugsを検出するかもしれません
  • クライアントがテストおよび検証した動作を確実に取得できる

1

あなたはしばらくの間誰にも試されない可能性があるすべてのものを構築するべきです。つまり、ビルドターゲットが1つしかない場合、開発者はすぐに気付くので、継続的インテグレーションでデバッグを実行する必要はありません。しかし、多くの場合、複数のコンポーネントがあり、現在作業されていないコンポーネントは開発者によってビルドされませんが、一般的なコードの変更によって依然として壊れている可能性があります。このような場合、すべての構成をビルドする必要があるため、そのようなコンポーネントに触れる必要があるときにビルドが壊れることはありません。

すべての構成ですべてをビルドするのには時間がかかることが多いため、コミットのたびにすべてをビルドすることはできません。そのような場合は、最も重要なコンポーネントのリリース構成を毎回行い、すべての夜間ビルドを追加します。

私は現在プロジェクトに取り組んでいます。継続的なビルドがあり、バージョンコントロールを10分ごとにポーリングします。選択したばかりの構成でも、大きなコミット後は1時間以上かかる場合があります。すべての構成ですべてのコンポーネントをビルドし、常にクリーンなビルドを行う夜間ビルドよりも約5時間かかります。また、毎週のビルドよりも、カスタマイズされたすべてのバリアントでリリースをビルドするため、丸一日以上かかります。


0

それはあなたのプロジェクトに依存します。私の現在のプロジェクトでは、「デプロイメントビルド」の一部としてリリースバージョンをビルドしている間、コミットごとにデバッグ(およびユニットテストの実行)のみをビルドしています。

私が働いていた最後の会社では、リリースバージョンが少し異なる動作をするいくつかの問題があったため、すべてのコミットでデバッグとリリースをビルドし、両方でユニットテストを実行しました。


4
そして、リリースの直前にリリースが壊れていることに気づいたら、2時間以内に状況を解き放ちます
Simon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.