web-dev-qa-db-ja.com

サイトをバージョン管理し、継続的インテグレーション環境をセットアップする必要があります

私はDrupal 6xプロジェクトで、バージョン管理を必要としないほど小さく始めました(開発者ごと))の起業家ですが、今ではそれなしには方法がないと確信しています。JIRAに関する広範なドキュメントがあります。すべてをカバーするよく書かれたユーザーストーリーを完備しています。これがどのように行われるかについて少し読んで、次の計画を思いつきました-

  1. モジュールを使用してサイトコードをデータベースから分離する
    1. コンテキスト
    2. 機能
    3. ストロングアーム
    4. プロファイラー
  2. コードをSVNリポジトリに配置し、ステージングサイトを作成する
  3. EC2本番サーバーにステージングサーバーのミラーを作成する
  4. Seleniumテストを作成し、 Saucelabs を使用してクラウドで実行します
  5. Elastic Bambooを使用してJIRA Studioでビルドワークフローを作成し、自動更新を実行する
  6. Drush Make を使用してプロファイルを更新およびインストールします
  7. 本番サーバーで更新を実行します(方法はわかりません)

まず、約50の「機能」のリストを作成し、それぞれにコンポーネント(ビュー、コンテンツタイプ、モジュールなど)を含めました。サイトには約12のカスタムモジュールとWebサービスが含まれているため、これは間違いなく挑戦です。もちろん、カスタムコードを含むコンテンツタイプ "アプリケーション"の別の12のインスタンス(ほとんどはアップグレード可能なビューまたはモジュールに変換したいと思います) 。良い点は、サイトがまだ運用中ではないため、リスクはまだ限られているということです。

誰かが同様のことをした経験はありますか?どのような落とし穴や制限に遭遇すると思いますか?上記の計画を改善/修正するための提案や、専門家からの洞察やアドバイスをいただければ幸いです。

41
druflex

わかりました、これを試してみます:)私はあなたの質問に完全に答えることはできませんが、おそらくあなたにいくつかの興味深いヒントを与えるでしょう。私の番号付けはあなたの番号に直接対応していないことに注意してください:)

  1. すでにコメントで述べたように、バージョン管理には小さすぎるプロジェクトはありません。個人的にはGitをお勧めします。理由は、その素晴らしく素晴らしい速度(gitでの待機時間は秒ではなくミリ秒で測定されます)と膨大な量の機能です。奇妙な名前と引数のため、ピックアップするのは少し難しいかもしれませんが、以下のドキュメントではそれらの多くを説明しています本当に良い: http ://www.eecs.harvard.edu/~cduan/technical/git/ 。もう1つの理由は、現在drupal.orgで使用されているため、gitを知っていると、貢献したい場合に役立ちます(パッチの提供、パッチのテスト、リリースモジュールなど)。

  2. とはいえ、何らかの理由(使用する予定のサービスとの統合など)でSVNを使用する場合は、SVNを使用してください。 SVNも適切に機能し、ソース管理がないよりもはるかに優れています。 (Linus Torvaldsに尋ねない限り..)また、気が変わった場合、VCS間で移行する方法がよくあります。たとえば、SVN-> Gitはうまく機能します。

  3. 第三に、このステップバイステップでアプローチします。一度にすべてをしようとしないでください。新しいツールを学ぶ時間をあなた(そしてあなたの開発者)に与えてください。

  4. Drupal 6からDrupal 7への切り替えは、特に多くのカスタムコードの場合、簡単なことではありません。APIの変更と新しい概念がたくさんあることに注意してください(エンティティ/フィールドシステムのように)、多くの提供されたモジュールがまだ完全に準備されていないという点もあります。

  5. 展開管理はDrupalの弱点の1つです。これもDrupal 7.でそれほど変更されていません)。私たちは問題を認識しており、Drupal 8: http://groups.drupal.org/build-systems-change-management/cmi 。機能などは役立ちますが、特効薬ではありません。すべてを機能としてエクスポートできるわけではありません。

  6. ステージング/本番サイトをデプロイするためのDrupal固有のオプションもいくつかあります。 Pantheon (まだベータ版)および Acquia Dev Cloud をチェックする価値があるかもしれません。

  7. 継続的インテグレーション、自動テストは重要であり、本当に便利ですしかしセットアップやテストの作成などにも時間がかかります。この時点での時間とそうでない時間。しかし、特に自動化されたテストは、漸進的な改善を簡単に実行できる領域です。それらを実行するための環境をセットアップしたら、時間が許す限り、より多くのテストを作成できます。

だから、ここにコメントの更新された質問に対する私の推奨事項があります:

butVCS(バージョン管理システム)の使用を開始し、Drupal 6を今すぐ使用します。サイトのステージング環境。使用している(提供された)モジュールを調べ、Drupal 7へのポートがその時点で実現可能かどうかを確認します。かかる時間を過小評価しないでください。また、テスト/導入プロセスの改善を開始します。最初に、最大のメリット/コストをもたらすと考えるものから始めます。

さらに具体的なフォローアップ質問を作成したり、既存の質問を調べたりすることもできます。ご覧のように、このような質問にほんの少しのヒントを与えるだけでも、膨大になり、かなりの時間がかかる可能性があります。

23
Berdir