69

これまで CI ツールを使用したことはありませんでしたが、読んだ限りでは、毎日コードを書いていない単独の開発者に CI ツールが役立つかどうかはわかりません。

まず、CI はプロジェクトにどのようなメリットをもたらしますか?

第二に、誰が CI を使用すべきか? すべての開発者にメリットがありますか?

4

7 に答える 7

75

CIの基本的な概念は、誰かがバージョン管理システムにコミットするたびにコードをビルドし、自動テストを実行するシステムがあるということです。これらのテストには、ユニットテストと機能テスト、さらには動作駆動テストが含まれます。

利点は、誰かがビルドを壊したときをすぐに知ることができることです。
これは、次のいずれかを意味します。

A。 _ 彼らはコンパイルを妨げるコードをコミットしました。

B。 _ 彼らはいくつかのテストを破ったコードをコミットしました。これは、修正が必要なバグを導入したか、コードの変更を反映するようにテストを更新する必要があることを意味します。

ソロ開発者の場合、コミット前にテストを実行する習慣があれば、CIはそれほど役に立ちません。これは、実行する必要があることです。そうは言っても、CIにテストを任せるという悪い習慣を身に付ける可能性があります。

ソロプログラマーとして、それは主に規律に帰着します。CIを使用することは有用なスキルですが、チーム環境に変換されないような悪い習慣を身に付けないようにする必要があります。

于 2008-09-24T23:35:17.610 に答える
18

他の人が指摘しているように、CI単独の開発者にとって利点があります。しかし、あなたが自問しなければならない質問は次のとおりです。オーバーヘッドの価値はありますか?サーバーを割り当て、すべてのネットワークをセットアップし、ソフトウェアをインストールする必要があるため、プロジェクトの CI システムをセットアップするのにおそらく 1 時間か 2 時間かかります。CI システムは、一度に数秒しか節約できないことを覚えておいてください。単独の開発者の場合、これらの時間の合計が CI のセットアップにかかった時間よりも多くなることはほとんどありません。

ただし、これまでに CI システムをセットアップしたことがない場合は、その方法を学ぶためだけにセットアップすることをお勧めします。学習経験に値しないほど長い時間はかかりません。

于 2009-07-17T13:37:59.890 に答える
10

CIの利点は、チェックインによってビルドが壊れたときに早期に検出できることにあります。また、ビルドに対して一連の自動テストを実行したり、メトリックなどを提供するためのあらゆる種類のツールを実行したりすることもできます。

明らかに、これはコミッターのチームがいる場合に非常に価値があります。コミッターのすべてが重大な変更をチェックするために熱心に取り組んでいるわけではありません。ソロ開発者として、それはそれほど価値がありません。おそらく、単体テスト、さらには統合テストを実行します。ただし、開発者がセットからファイルをチェックインするのを忘れる場合が何度もあります。

CIビルドは、「リリース」ビルドと考えることもできます。環境は安定していて、マシンに追加した開発ギズモの影響を受けないようにする必要があります。常にビルドを再現できるはずです。これは、プロジェクトに新しい依存関係を追加し、それを考慮してリリースビルド環境をセットアップするのを忘れた場合に役立ちます。

于 2008-09-24T23:33:28.783 に答える
6

真実は、継続的インテグレーションはチームで最も理にかなっているということです。単一の開発者もいくつかの利点を得ることができます.CIシステムのセットアップに費やす時間に対抗するのに十分かどうかを自分で判断する必要があります.

  • 必要なファイルをチェックインするのを忘れた場合、マシンで動作していても、リポジトリには壊れたバージョンが含まれています。CI はそのケースを検出します。
  • CI サーバーが別のマシンで実行されている場合、ビルド環境への依存関係を示している可能性があります。つまり、ビルドとすべてのテストは開発ボックスで機能しますが、別のマシンでは一部の依存関係が満たされておらず、ビルドが中断されます。
  • 毎日のビルドは、古いソフトウェアが OS/コンパイラ/ライブラリの最新のアップグレードで動作しないことを示している可能性があります...
  • CI システムにビルド アーティファクトのアーカイブがある場合、ソフトウェアの古いバージョンのディストリビューションを簡単に入手できます。
  • 一部の CI には、ビルドに関するメトリックを表示する優れたインターフェイスがあり、自動生成されたドキュメントなどへのリンクがあります。
于 2008-10-21T14:46:24.460 に答える
6

複数のコンパイラをサポートする必要がある場合は、1 つの IDE で開発するだけで、そのすべてを実行できる CI ビルド システムがあると便利です。私のコードは Vc6 から VS2008 まで x86 でビルドされ、x64 は VS2005 & 8 でビルドされるため、プロジェクト構成ごとにプロジェクトごとに 7 ビルドになります... CI システムを持つということは、1 つの IDE で開発し、CI システムにすべての私がサポートしているコンパイラはまだビルドされています。

同様に、複数のプロジェクトで使用されるライブラリを構築している場合、CI は、現在作業しているプロジェクトだけでなく、すべてのプロジェクトで動作することを確認します...

于 2008-10-23T19:50:50.867 に答える
5

CIシステムを使用して、リリースビルド(および通常の自動「オンコミット」ビルド)を実行します。

セットアップをリリースするためにすべてのプロセスをステップスルーするリリースビルドを開始するボタンをクリックできることは次のとおりです。

  • 高速(私は他のことをまっすぐに進めることができ、それは別のマシンで実行されるので、私を遅くすることはありません);
  • 繰り返し(セットアップをリリースフォルダにコピーしたり、知る必要のあるすべての人に通知したりするなど、何も忘れません)
  • 信頼できる(人間とは異なり、間違いはありません!)。

2〜4週間ごとに動作するソフトウェアを提供することが期待されるアジャイル環境では、1人のチームであっても、これは間違いなく持つ価値があります。

于 2008-10-23T20:06:40.523 に答える
2

CIは、何かをチェックインするのを忘れた場合に気付いているという意味で、ソロ開発者にメリットをもたらします(ビルドが壊れてしまうため)。ただし、他の開発者がいない場合、その統合価値は低下します。

于 2008-09-24T23:34:01.027 に答える