質問

の基準の1つ ジョエルテスト 毎日ビルドです。アイデアは、ビルドが壊れている場合、それを壊した人は誰でもそれを修正するためにいるということです。ビルドを修正できない場合、誰もが古いバージョンをチェックしてそれに取り組む必要があります。可能な限りマージして分岐することを避けることが重要である集中型バージョン制御でこれがかなり悪いことができることを理解できますが、これは分散バージョン制御の軽微な迷惑のように聞こえます。これに同意しますか?毎日のビルドが重要である他の理由はありますか?

役に立ちましたか?

解決

ここで注意するのが重要なのはそれだと思います 通常 ビルドヘルプ 後でよりも早くエラーをキャッチします. 。そうではありません 持ってる 毎日、しかし頻繁に十分です。理想的には、ユニットテストを実行することもできます。

目標は、最終テストフェーズの前にビルドが壊れるかを確認し、できるだけ早くそれらを見つけることです。

メイン開発ブランチを構築するために設定するだけです。

私たちは職場でそれを使用します(1時間ごとに構築しますが)。多くの場合、リリースの数時間前に問題について見つけることを忘れてしまいます。

他のヒント

これに少し追加する必要があります(および@goodenoughs):

しかし、これは分散バージョン制御のための小さな迷惑のように聞こえます。

「サーバー」ビルドが行うことは、トランクがクリーンから多かれ少なかれテストをビルドして渡すことを伝えることです(環境で必要な構成の量は少なくなります)。

私はDVCへの切り替えを考えていますが、そうしても、私の冷たい死の手から私の連続統合をドラッグします。

簡単な例を挙げると - 機能「A」を開発している「彼は機能「B」を開発しているかどうかに分配されているか、ある時点ですべてをつなぎ合わせる必要があります。マシン上では、他の場所ではありません。したがって、ビルドを「トランク」にプッシュすると、継続的な統合がトリガーされ、ビルドが失敗し、あなたは知っているでしょう。 誰もがあなたのそれほど完全なコードではないコードを引いて、あなたが措置を講じることができるようになります。

複数の開発者とのプロジェクトに取り組んでいる場合、リリースバージョンがどこから来たのかを定義することができなければなりません。これは、バージョン制御の仕組みに関係なく真実です。

特に他の人が依存関係を持っている機能を追加した場合、それがあなたの開発環境以外のどこかでテストを構築して合格することを「生きる」ようにプッシュされると確信できるようにすることができます。それ以上に、私はビルドサーバーからビルドから展開します - それは、「決定的な」ビルドをどのように指定するかです。最終的に、ユーザーのトリガー展開ビルドを使用します。あなたがそれを回ることができるというのは良いことだということではありません - あなたがそれを必要とするならあなたはできません(そして私は 持ってる 不足しているファイルを見つけてコミットするために、オフィスの丸い丸いボックスをスクランブルしました)。

それは少し強いですか?わからない - しかし、私のビルドサーバーは、私が恩返しをしたくないものの1つです。

私が信じている毎日のビルドは非常に重要だと思います。さまざまなタイムゾーンに配布されたチームがある場合、ほとんどのチームでほぼ「日中」の時間を見つけるのが最善です。さらに、毎日のビルドに自動化されたテストコンポーネントがある場合、それはより望ましいものです。

中央のソース制御システムの時代には、ソースコードで何かが変更されたときに5〜10分ごとに実行される継続的なビルドを提唱します。コンピレーションエラーは、ほとんどのチームを遅くする可能性があるためです。分散型ソース制御システムを実行している組織の場合、開発者は「手付かずの」コードベースに直接頻繁に触れるため、継続的なビルドは必要ない場合があります。

理想的には、構築するのに半日以上かかる大規模なものを構築しない限り、1日に1回以上構築されます。継続的な統合サーバーを設定したら、 ハドソン また TeamCity, 、ビルドは自動的に、通常は1時間ごとまたはすべてのコミットで発生し、問題がある場合は通知されます。

特にビルドの一部として自動化されたテストも実行している場合、エラーを早期にキャッチするのに適した方法です。ビルドが1つの開発者のマシンで機能するが、リポジトリや環境から何かが省略されているため他の場所では機能しない構成エラーを見つけるのに特に便利です。

より高度な連続統合サーバーを使用すると、メトリックを時間の経過とともに追跡することもできます(コードカバレッジの割合、ビルド時間、コードの行など)。

毎日のビルドは大丈夫です。正直に言うと、あなたは彼らを明確に必要としています。正直に言うと、ジョエルのテストは最近少し時代遅れだと思います。

私の意見では、あなたは1日を通して継続的に構築し、ユニット、システム、および機能レベルのテストケースを実行し、理想的には環境のような環境にパッケージ化して展開する必要があります。期待どおりに機能しています。

ビルドまたは展開時間が過剰な場合は、物理的またはソフトウェアRAMディスク、インターネット接続の高速化、ビルドのプラレッジ化などのこれらの問題の一部を分類することを検討してください。 。

毎日のビルドは重要ではありません。毎日のビルド それは常に成功しています ある(またはそれが1時間しか壊れていないもの)。ビルドが壊れたときにCIを使用すると、70%の時間はあまり役に立ちません。これは、ほとんどが壊れていても、エラーを特定するのに役立ちません。

サーバーに毎日ビルド、テスト、展開する必要があると思います。

「Daily Build」の背後にあるアイデアは、テスターとプロジェクトマネージャーが実行できる何かを常に用意することです。

過去には、「Daily Build」の後にデスクトップアプリを使用して、テスターまたはプロジェクトマネージャーがすぐにアプリを実行できたため、展開ステップに言及する必要はありませんでした。

ライセンス: CC-BY-SA帰属
所属していません softwareengineering.stackexchange
scroll top