回答:
Virya Groupでの作業方法に基づいて回答できます。CTOのMarco Dingsが一連の記事でこれらを書いています:http : //magazine.joomla.org/issues/issue-apr-2014/item/1842-practical -development-3-project。
私たちはアトラシアン製品を使用しています-Jira、Stash、Confluenceなど
作業環境を各プロジェクトのvhostとして設定しました-これをスクリプト化することで、より速くなりました。したがって、各開発者には独自の「遊び場」があり、dev.clientsite.com、staging.clientsite.com、次にライブサイトclientsite.comを設定します。
vhost内に、ディレクトリ-vcs-とWebルート-wwwがあります。
PHPStormを使用し、Joomlaをwwwディレクトリにインストールし、リモートホストを使用して、これをdev / staging / liveの対応するWebルートにマップします。
リポジトリがクライアントのプロジェクトに設定されます。このリポジトリには、バニラJoomlaから変更されたもの、およびテンプレートを含め、形や形に変更された拡張機能を置きます。
これらは、VCSディレクトリからwwwディレクトリにシンボリックリンクされています。そのため、ファイルはVCSリポジトリに「ライブ」ですが、リンクされたファイルとしてwwwフォルダーに表示されます。
テンプレートベースでLESSを使用し、別のリポジトリにあるBEM構造に従います。これはプロジェクトごとに複製され、新しいテンプレートとしてシンボリックリンクされます。クライアント固有のカスタマイズはこのプロジェクトに固有のものになりますが、将来の変更をすべてのプロジェクトに簡単にマージできます。
一部の人々はサイト全体をバージョン管理します、それはあなたが何を達成したいかによります。私たちは何が変わるかに興味があり、それを私たちが単独で管理します。顧客が変更できるcustomer-custom.cssファイルを作成しますが、それ以外はすべて立ち入り禁止です。
データベースのバージョン管理に関しては、これは私たちが調査しているものです。いくつかのオプションを試してみましたが、まだすべてのボックスをチェックするものは見つかりませんでした。
一連のスクリプトを使用して、上記のすべてを自動化します。これらは、進行中に開発および調整しています。
お役に立てば幸いです。
私たちは、RCheeslyによる上記と同様のワークフローを使用しています。プロジェクト管理にはアトラシアン製品スイートを強くお勧めします。これにより、監査メッセージをJIRAチケットに関連付けて、監査証跡をbitbucketに残すことができます。私たちは常に機能ブランチ(feature / joomla-update / JIRA-ticket-no)を作成し、そのブランチで作業を実行してから、マスターにマージしてデプロイする前にテストします。
新しい機能を公開する準備ができていない場合は、別のステージングブランチにマージしてデプロイし、クライアントにプレビューすることができます。その間、公開する必要のある機能のマスターからクリーンなブランチを作成できます。この作業を行うための鍵は、チームがマスターブランチまたはステージングブランチに直接コミットせず、まだ準備ができていないすべての作業がbitbucketリポジトリ内の独自のブランチに残るようにすることです。
インストール全体をバージョン管理で保持します。イメージフォルダーとnode_modulesのみを無視します。これは、デプロイプロセスが原因です。マスターブランチを受け取り、すべてのファイルの変更をデプロイするawsプロダクション/ステージングサーバーのフックを使用します。これにより、ローカルで更新を実行し、テストしてから展開できます。
私たちのローカル環境は、私が強くお勧めするdockerとLaradockを使用しています。Laravelを対象としていますが、PHPベースのサイトに最適な環境を提供し、本番環境を模倣して自信を持って更新できるようにします。
この方法を回避するための最大の課題はデータベースでした!最初に、ローカルで更新を実行し、サーバーで同じ更新をプッシュしてから実行して、すべての環境で拡張機能/コアの移行が確実に実行されるようにしました。これは理想からかけ離れています。
CLIツールを使用してこれらの更新を実行するCLI Helperを開始しました。これにより、プロセスの信頼性が高まり、処理速度が大幅に向上します。これは良いですが、完璧ではありません!より良いデータベースソリューションを見つけた方からの連絡をお待ちしています!