新しい開発者がチームまたは開発者が変更を使用しているコンピューターに参加するたびに、開発者はローカル開発環境をセットアップして現在のプロジェクトを機能させるために多くの作業を行う必要があります。 SCRUMチームとして、展開とテストを含むすべてを自動化しようとしているので、ローカル開発環境のセットアップを自動化するためのツールやプラクティスはありますか?
たとえば、環境をセットアップするには、まずEclipseをインストールし、次にSVN、Apache、Tomcat、MySQL、PHPをインストールする必要がありました。その後、DBにデータを入力し、さまざまな構成ファイルなどを少し変更する必要がありました。この労力をワンクリックで減らす方法はありますか?
いくつかのオプションがあり、時にはこれらの組み合わせが便利です:
さまざまなオプションの詳細:
自動インストールワークステーションのさまざまなサービス、ツール、および構成ファイルのインストールと構成を自動化するツール:
ディスクイメージその後、もちろん、構成可能なホストのイメージを復元できるように保存するための ディスクイメージングツール もあります別のホストに。仮想化と同様に、これはテストボックスにとって特に便利です。なぜなら、物事をクリーンな状態に簡単に復元できるからです。継続的に最新のものを維持することは依然として問題です。構成ファイルの変更を伝えるためだけに新しいイメージを作成する価値はありますか?
仮想化は別のオプションです。たとえば、Xen、VirtualPC、またはVMWareイメージのコピーを作成して新しいホストを作成します。これはテストボックスで特に役立ちます。テストがどのような混乱を引き起こしても、クリーンで既知の状態に簡単に復元できるためです。ディスクイメージングツールと同様に、ホストを最新の状態に保つには、自動化されたインストール/構成ツールを使用する場合よりも多くの手動の手順と注意が必要です。
ソースコード管理必要なツールをインストール/設定したら、ビルドを行うにはソースコードリポジトリから必要なものをチェックアウトする必要がありますそしてそれを構築します。
現在、上記の組み合わせを使用して、プロセスを次のように自動化します。
私はこの質問に出くわし、誰もまだ言及していないことに非常に驚いた Vagrant 。
Pete TerMaatなどが述べたように、仮想化は開発環境を管理および自動化するための優れた方法です。 Vagrantは基本的に、これらの仮想ボックスの設定から苦痛を取り除きます。
数分以内に、お気に入りのLinuxディストリビューションの完全に新しいコピーを起動して実行できます。 provisioned 実稼働サーバーとまったく同じです。
PHP、MySQLなどをインストールするためにOSXやWindowsと戦う必要はもうありません。すべてのソフトウェアは、仮想マシン内で動作します。 vagrant ssh
を使用してSSHで接続することもできます。間違いを犯したり、何かを壊したりする場合は、vagrant destroy
それとvagrant up
だけをやり直してください。
Vagrantは、ローカルファイルシステムに 同期フォルダー を自動的に作成します。つまり、仮想マシン内で開発する必要はありません(つまり、Vimを使用)。お好みのエディターを使用してください。
今では、私が行うほとんどすべてのプロジェクトに新しい「Vagrant box」を作成しています。すべての設定はプロジェクトリポジトリに保存されるため、別のチームメンバーを簡単に呼び出すことができます。リポジトリをプルして、vagrant up
を実行するだけで、文字通り準備ができています。
また、これにより、異なるソフトウェア要件を持つプロジェクトの処理がはるかに簡単になります。 PHP 5.3に依存するプロジェクトもありますが、PHP 5.4。そのプロジェクトに必要なバージョンをインストールするだけの新しいプロジェクトもあります。
重要なポイントの1つは、チェックアウト後すぐにビルド、デプロイ、実行できるように、ソース管理でプロジェクトを設定することです。
つまり、Makefiles、ant buildfilesなどのヘルパーインフラストラクチャ、およびIDEプロジェクトファイルなどのツールの設定もチェックインする必要があります。
これにより、個々のプロジェクトのセットアップの面倒が処理されます。
基本的なマシンのセットアップには、標準のイメージを使用できます。別のオプションは、プラットフォームのツールを使用してインストールを自動化することです。 Linuxでは、必要なすべてのパッケージに依存するメタパッケージを作成できます。 Windowsでは、MSIなどを使用して同様のことが可能です。
編集:
理想的には、ヘルパーインフラストラクチャをチェックインする代わりに、ビルドがgenerateヘルパーインフラストラクチャを許可する情報をチェックインします。これは、たとえばGNUビルドシステム(autotoolsなど)、またはMavenによる。これはよりエレガントです。たとえば、1つの特定のIDE、およびヘルパーインフラストラクチャの設定(パスなど)でメインプロジェクト設定を複製する必要はありません。
ただし、これはより複雑なアプローチでもあるため、動作させることができない場合は、IDE filesのようなものを直接チェックインすることは受け入れられると考えています。
Virtual PCまたはVMwareを使用して開発環境を仮想化するのが好きです。これにより、開発者間で共有できる標準の「開発環境」が提供されます。ユーザーが開発環境と競合する可能性のあるシステムにユーザーが追加する可能性のあるソフトウェアについて心配する必要はありません。また、開発環境が両方とも1つのシステム上にない2つのプロジェクト(コアテクノロジーの2つの異なるバージョンを使用)で作業する方法も提供します。
puppet を使用して、開発環境と実稼働環境の両方を構成します。最高の自動化システムを使用することが、運用をスケーリングする唯一の方法です。
私は自分でこれについて考えてきました。ミックスに投入できる技術は他にもいくつかあります。私が現在設定しているものは次のとおりです。
Sudo apt-get install acmecorp-Eclipse-env
またはSudo apt-get install acmecorp-intellij-env
、 例えば。apt-cacher
(パッケージプロキシ)。帯域幅を節約することに加えて、インストールがはるかに高速になります(パッケージがローカルネットワークにキャッシュされるため)。以前の場所では、SCM(クリアケース、SVN)にすべて(つまりすべて)がありました。新しい開発者がClearCase | SVNをインストールして、リポジトリを削除した場合。また、開発チームに環境を更新させるだけで、特定のlib/toolを更新する必要がある場合にも対応します。
このために2つのリポジトリを使用したため、コードとツール/構成は別々の場所にありました。
OSXを使用していて、Railsで作業している場合。次のいずれかをお勧めします。
仮想マシンを使用するオプションは常にあります(例: VMWare Player )。 1つの環境を作成し、最小限の構成で新しい従業員ごとにそれをコピーします。
DevStructureのBlueprintを強くお勧めします。それはオープンソースであり、あなたのユースケースは、実際にソフトウェアを最初に書いたexact理由です。私たちの目標は多少変更されましたが、それでもあなたが説明しているものに最適なツールです。要するに、再利用可能なサーバー構成を作成することができます-シンプルな構成管理。これがお役に立てば幸いです!
https://github.com/devstructure/blueprint (Blueprint @ Github)
http://nsnihalsahu.github.io/devscript でDevScriptを試してください。そのような1つのコマンド、devscript lamp
またはdevscript laravel
またはdevscript Django
。数分程度で、あなたのインターネット共同の速度に依存します
標準構成でマシンを使用する場合、新しく完全に構成されたインストールでディスクのイメージを作成できます。これは多くの企業で非常に一般的なアプローチです(開発者だけでなく)。個別に設定されたOSが必要な場合、設定されたOSが目的のセットアップになったら、追加および変更されたすべてのファイルをtar-bz2し、rootとして展開して、目的の環境を最初から作成します。
linuxフレーバーを使用している場合、おそらくパッケージ管理システムがあります。Fedora/ redhatの場合は.rpm、ubuntu/debianの場合は.debを考えます。説明するものの多くはすでに利用可能なパッケージを持っています:svn、Eclipseなど。会社固有のソフトウェア用に独自のパッケージをロールし、リポジトリを作成し(おそらくローカルネットワークでのみ利用可能)、セットアップを1つに減らすことができます。会社のリポジトリを/etc/apt/sources.list(debian/ubuntu)に追加し、次のようなコマンドを呼び出すbashスクリプト
/home/newhire$ apt-get update && apt-get install some complete package list
buildbot を使用すると、頻繁に変更される会社のパッケージの定期的なビルドを自動化できます。