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


41

私は、(開発者ごとに)バージョン管理を必要としないほど小さく始まった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サービスが含まれており、カスタムコード(ほとんどの場合、アップグレード可能なビューまたはモジュールに変換したい)を含むコンテンツタイプの「アプリケーション」のインスタンスが10個あるため、これは間違いなく困難です。良い点は、サイトがまだ運用されていないため、リスクがまだ限られていることです。

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


非常に興味深い質問です。それは私も自分のウェブサイトに実装することを考えたものですが、効率的ではないと思われたのでgaveめました。あなたがそれを通過する場合は、ご意見をお寄せください。
ティビー

3
確かに興味深い質問ですが、答えるのも難しいです。複数の質問をしているので、完全/最良の答えを出すのは困難です。ただ一つのヒント:私見、バージョン管理には小さすぎるプロジェクトはありません。特にgitのような分散VCSでは、コードをローカルリポジトリに配置するのに5秒ほどかかります。drupal.stackexchange.com/questions/316/
ベルディール

振り返ってみると、実際、バージョン管理には小さすぎるプロジェクトはありません(私が知っていた場合のみ)。私はそのリンクを調べましたが、さらに別の重要な質問が出てきました。Drupalコアを独自のgitリポジトリからプルする場合、SVNの代わりにDrupalプロジェクトにgitを使用する必要がありますか?SVNを使用している理由は、JIRAの自動ビルド機能(Elastic Bamboo)を使用することを考えると、JIRA Studioでネイティブサポートが重要だからです。複数の質問でごめんなさい:-(
druflex

更新:コードをレビューした結果、プロジェクトには多くのカスタムコードが存在することが判明しました。これらの機能を使用してエクスポートするのは非常に困難です。したがって、私たちの前にあるオプションは-(1)そのまま終了してリリースし、適切なバージョン管理を使用してD7で並行開発を開始します。これは、後でデータベースを論争することを意味します。怖い。(2)D6の必須機能をやり直し、リリースしてから、継続的インテグレーションを行います。(3)D7の重要な機能をやり直し、リリースしてから、継続的インテグレーションを行います。主な問題は、これらの各オプションにかかる時間です。あなたが私だったら、何に投票しますか?
druflex

回答:


23

OK、これを試してみます:)私はあなたの質問に完全に答えることはできませんが、多分あなたにはいくつかの興味深いヒントがあります。私の番号はあなたの番号に直接応答するものではないことに注意してください:)

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

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

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

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

  5. 展開管理、Drupalの弱点の1つであり、Drupal 7でもそれほど変更されていません。問題を認識しており、Drupal 8でこれを解決するために人々が懸命に取り組んでいますhttp : //groups.drupal.org /ビルドシステム変更管理/ CMI。機能などが役立ちますが、それは特効薬ではありません。すべてを機能としてエクスポートできるわけではありません。

  6. ステージング/運用サイトを展開するためのDrupal固有のオプションもいくつかあります。Pantheon(まだベータ版)とAcquia Dev Cloudはチェックアウトする価値があるかもしれません。

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

したがって、コメント内の更新された質問に対する私の推奨事項は次のとおりです。

そのままフィニッシュと放出は、しかし今はDrupal 6 VCS(バージョン管理システム)を使用して開始します。サイトのステージング環境を作成します。使用している(提供された)モジュールを確認し、その時点でDrupal 7へのポートが実行可能かどうかを確認します。時間がかかることを過小評価しないでください。また、テスト/展開プロセスの改善を開始します。まずは、最も利益/費用をもたらすと思われるものから始めます。

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


このような包括的な包括的な回答をありがとうございます。私はあなたがお勧めするものを正確に決めています。実際にGitを含めます。Gitプラグインを使用できるように、JIRAをホストからスタンドアロンに移動します。D6です。現在のバージョンをリリースし、できるだけ多くの既存のコードを使用して、適切なベストプラクティスコピーの再作成を並行して開始します。サポートしていただきありがとうございます。乾杯!
druflex

+1優れたアドバイス、包括的、現実的で街頭でリアル。あなたは経験から話しています。ありがとう。
-therobyouknow
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.