質問

ソロプロジェクトを行っている場合 - CIツールを使用してリポジトリから構築しますか?私はチーム環境でハドソンとクルーズコントロールを使用しました。そこでは、誰かが何かをチェックするとすぐに構築することが不可欠です。

バージョンコントロールの価値はまだ明らかだと思いますが、私は自分のローカルマシンの上に構築されただけで、他の誰もコミットしていないので、すべてのコミットの後に構築する必要がありますか?

役に立ちましたか?

解決

さて、私はプロジェクトで継続的な統合ツールを使用することを計画しており、私はユニークな開発者です。必要なので

  1. 1つの目標は、それをクロスプラットフォームにすることであり、統合ツールを使用することで、統合リポジトリ(または中央のもの、または何がありますか)を押した場合、いくつかのプラットフォームでアプリを(基本的に)確認するのに役立ちます。権威として使用されます)。
  2. このプロジェクトは長期的に構築されているため、後でチームと協力する必要があります。私は2012年まで誰も採用するつもりはないので、継続的な統合の事は、1が優先事項になるまで待つことができます。

クロスプラットフォームとチームワークの準備を除いて、私は必要とは思わない。主なことは、ある種のソース制御ソフトウェアを持ち、バックアップを保持するためのいくつかのリポジトリを持つことです。これにより、必要に応じてビルドツールをセットアップするのに役立ちます。

ビルドタイミングについて、私はMercurialを使用して、チームワークリポジトリではない統合リポジトリを設定しています。したがって、統合システムに構築しようとする時が来るまで、チームワークリポジトリの変更をプッシュします。次に、Teamwork RepoからIntegration Repoにプッシュすると、ビルドがトリガーされます。次に、毎日1回、統合リポジトリのTeamwork Repoをプルするスクリプトも追加します。

ここでは、私は自分のプロジェクトでほぼすべての日を働いていると仮定していますが、それは必ずしも真実ではありません。ビルドが必要な頻度に関連するビルドタイミングを設定する必要があります。私が以前に働いていたゲーム会社で、私たちはCruisecontroleを使用し、それは毎時間完全なビルドを構築しました。また、必要に応じていつでもビルドを強制することもできます。

ホームプロジェクトの場合、1日1回はすでに「頻繁に」あるかもしれません。主な要件は、ユーザーがビルドを強制的に起動できるようにすることです。

他のヒント

簡単な熟考の後、私はそれが もっと チームよりもソロ開発者にとって重要です。

最も基本的なレベルでは、CIサーバーは、コミットされたソースからゼロからアプリケーションを構築できることを示しています。

私がやろうとしていることの1つは、私のビルドに展開可能なパッケージが含まれていることを確認することであるため、展開するために何かを手に入れることができることも知っています(既知の状態/バージョンから)。

実際、ファイル|新しいプロジェクトを実行する場合、おそらくリポジトリへの作成または追加を含める必要があります。


Addendum(2016) - 現在、私のCIシステムは展開プロセスの不可欠な部分でもあるため、その価値は増加し、それなしでは成果物プロジェクトを絶対に実行しません。自動プッシュボタンの展開は、プロセスから多くのストレスを取り除き、何らかの方法で、形状または形成ビルドサーバーはそれに不可欠です。

私がコミットしている唯一の人であるとき、私はただ構築してテストします 実際にコミットします。私は通常、次のようなmakefileターゲットを使用します。

make sense

これは、すべてのテスト(Valgrind Aware)を構成、ビルド、実行し、糸くずを実行するなどを実行します。

さらに、メインリポジトリに供給されるいくつかのブランチがある環境では、誰もがコミットまたはプッシュする前に常にプルを追跡した場合、CIサーバーは少しだけ殺害される可能性があります。最後のビルドを壊した著者が金曜日にピザを買う著者が通常、物事を非常にスムーズに走らせ続けるというよく書かれたルール:)

それがプロジェクトが彼ら自身のリーダーを持っているサブシステムに明確に分割されている状況に陥った場合、あなたは 本当 ハドソンのようなものを使用することを熟考する必要があります。誰かがローカルでテストし、別のサブシステムでレースを失い、最終的に有毒なものを押し進めるかもしれません。

また、速い移動プロジェクトのフォークを維持している場合(たとえば、Linuxカーネルへのパッチのセット)、そのプロジェクトで「ソロ」であるにもかかわらず、ハドソンのようなものを使用することを本当に検討する必要があります。これは、メインラインから直接分岐 /再ベースする場合に特に当てはまります。

これはただの素晴らしいボーナスだとは言いません。私たちのソロアーティストにとって高品質のソフトウェアエンジニアリングにとって不可欠だと思います。私たちのほとんどは、後で修正するのに十分簡単だと思うなら、急いでいる場合、彼らの品質基準を少し滑らせます。その状態でソフトウェアをコミットすると、基本的にソースコントロールに保存された価値のないコードベースがあります。

適切に順守した場合(つまり、テストをスキップせず、コミットするたびにビルドすることを確認します)CIは、とにかくコミットする場合よりも高品質の基準に従わなければなりません。

待ち時間を短縮して、すべてがまだ順調に進んでいるかどうかを確認することが重要です。保存したらすぐにIDEに物をコンパイルさせることができますが、ユニットテストを自動的に実行しないため、CIサーバーにユニットテストとテストケースカバレッジレポートを実行し、すぐにコードのその他の品質分析を実行してもらいます。私はそれを押します。

私がしなければならない唯一のトリガーは、現在の変更をバージョンコントロールにプッシュし、コーディングに戻ることができます。そして、私はコーディングについて考えている間、CIシステムは長い巻き上げされた品質レポートを行うのに忙しく、私の脳が小康状態になったときにしばらく見ます。

同じラップトップに、プッシュインするコード用のビルドを行う別のVMwareマシンがあります。これを行うには、ターンキーLinux VMwareイメージを取得し、APT-Getを使用してJenkinsをインストールし、マイナーな構成変更を加えます。

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