web-dev-qa-db-ja.com

小規模なLinuxソフトウェア開発チーム向けのデスクトッププロビジョニング

目標: 4人のソフトウェア開発者が独自の環境をセットアップするのではなく、標準の開発イメージを使用して小さなチームを作ります。

なぜ:

  1. ディストリビューション、ビルド固有のライブラリ、エディターやIDEなどのツール、mysql、couchdb、Java、maven、python、Android-sdkなどをインストールするのに1日または数日かかります。4人の開発者が4回繰り返すと、巨大なPITAになります。 (sys管理者ではなく)時間を浪費し、後で発生する迷惑な分岐を生成します(it-builds-on-my-box症候群)。

  2. 生産性、設定、トリック、スクリプト、セットアップの共有はありません。

この一部は、ビルドシステムをヘッドレス仮想ボックスイメージに分離することで支援されます。ただし、これは実際にはツールや、実行する必要のあるGUIデスクトップ開発には対応していません。

したがって、ゴースト、仮想化、そして最終的に一種の社内Linuxディストリビューションの作成という3つの基本戦略がわかります(Googleはこのようなことをしていると思います)。

ターゲット開発環境はDebianOpenBoxに基づいており、シングルヘッドとマルチヘッドの両方で動作するために、最小で8GBの第3世代Corei7ノートブックを混在させる必要があります。重要なのは、ラップはnot同じですが、2012年のMacBookとPCが混在していることです。そう:

  1. 仮想化:VirtualBoxなどのVM内ですべての作業を行っており、このハードウェアで実用的であるか、煩わしいです。

  2. ゴースト:さまざまなメーカーのラップトップがこれを非実用的にしますか?.

  3. DIYディストリビューション:一連のパッケージインストールのスクリプトを作成する以外に、これがパッケージインストールのスクリプトの壮大なプロジェクトになるのを防ぐことができる「ディストリビューションメーカー」があるかどうかはわかりません。

それで何かアドバイスはありますか?

4
deakblue

これはトリッキーな問題であり、政治に非常に速く突入する問題です。 「開発者が独自に構築する方法である」という企業文化が非常に強い場合、それを破ることは不可能です。ただし、ITは少なくとも初期設定に確実に関与しているため、うさぎの穴からそれほど遠くないように思えます。

私も同様の問題を抱えていますが、ITに関わるのは、新しいラップトップのセットアップの最も基本的なことだけです。私はnot開発環境のセットアップに関与しています。各開発者がその責任を負っています(これは急速にチームの努力になり、それ自体が良いことです)。


ただし、明示的な管理サポートがないと、サポートされているユーザーに、自分が行っていることが最善であると納得させることができます。それは私たちが教えることができないスキルです。


私たちの仕事の性質上、VM指向の開発が非常にうまく機能することがわかりました。開発ステーションとしてOSX、Windows、Linuxのラップトップも混在しており、ツールとOSのより具体的な組み合わせに向けて開発しているため、新しいコードが確実に機能するようにするための最も信頼できる方法は、virutal-machinesです。ターゲットプラットフォーム。

これまで、MacBookで開発し、統合環境にデプロイしてから、ターゲット環境では機能しないMac固有の癖に数日かけて取り組んできました。これらのユーザーがVMの使用を開始すると、この「数日を費やす」問題は解消されました。

VM指向のワークフローが機能するかどうかは、開発方法に大きく依存します。これは、開発者が次の場合に最適に機能するようです。

  • 開発者は機能ブランチで作業できますか
  • その機能ブランチを独自のVMセットに簡単にデプロイできます
  • それらの機能ブランチを統合/テスト/ QAにマージすることができます。
  • 他の開発者を怒らせないように十分なスタイルセンスを持っています

「VM内のGUIIDE」については、これも機能します。 Macユーザーの何人かはこの正確なルートをたどり、1つの画面にフルスクリーンVMがあり、その上ですべてのコード作成を行い、他の画面を次のような非開発用に使用します答えを求めてstackoverflowを参照します。これは、クリップボードがデスクトップとVMの間で移植可能である場合に最適に機能します。

今のところ良い計画は、使用しているプラ​​ットフォームでVMを構築し、常に新しいビルドに入れるすべての機能を備えていることです。次に、それらを接続して、ホストされているリポジトリから更新をプルします。これにより、どのソフトウェアがいつ更新されるかをより適切に管理でき、バージョンクリープが少なくなります。最高の効果を得るには、数人の開発者に共通していると思われる微調整をいくつか含めてください。

あなたは定着した慣行と戦っています、そしてそれは常に変化するのに少し時間がかかるでしょう。少なくとも、OnHighからの注文はありません。

3
sysadmin1138