関連する背景の詳細
配布用のVagrant VMの構築
開発者ワークフロー
上記に明らかに追加されている「ベストプラクティス」と見なされている明確な欠陥や落とし穴はありますか?
あなたの計画は素晴らしいですね!あなたは本当に良いスタートを切っていると思います。
私の唯一のアドバイスは、あなたの開発者ワークフローに関してです。私はあなたがdev
ブランチを問題とするかもしれないと思います、なぜなら開発者はコードを意のままにマージするからです彼らは準備ができていると思います。
BranchAとbranchB、C、およびDの両方がdev
にマージされて失敗した場合、どの部分が必ずしも失敗しているのかはわかりません。また、誰かが衝突を起こして何かを押し上げた場合、それが誰であったかはわかりません。狂気と狂気は続いて起こるはずです。
機能の準備が整っていないことが判明し、コードをdev
からバックアウトする必要がある場合、他の開発者はすでに追加をプルダウンしています。その後、これらの開発者はdev
にマージし、壊れたコードを無意識のうちに再導入します。狂気と狂気は続いて起こるはずです。
テストされていないコードをテスト済みのコードから遠ざけるには、いくつかの分離ステップが必要になります。
これはすべて、チームのスキルセット、および実際の連携方法によって異なります。以下は、さまざまなレベルのgit知識とさまざまなレベルの開発者コードの信頼性を備えた、急速に拡大するチームの問題に対する私の解決策です。
私は常に、開発者のワークフローだけでなく、テスト手順、リリースプロセスについても考えるように人々に伝えようとしています。それらはすべて、単一のプロセスの一部として計画する必要があります。
release
に基づいて新しいmaster
ブランチを作成します。このブランチは、次のリリースでのブランチのコンテナになります。integration
ブランチを作成します。integration
ブランチにマージされます。 (理想的には、IMHO、機能ブランチがrelease
に基づいてリベースされた後でのみ、競合の解決を強制します)integration
ブランチとこれだけの機能であるrelease
ブランチをテストします。release
に基づいて再作成されます)。これがintegration
の理由です。誰もこのブランチを引っ張ることはなく、必要に応じて吹き飛ばすことができます。release
ブランチに基づいて機能を作成している他の開発者と共有できます。私はそれがたくさんのように聞こえることを知っていますが、それは本当に頭痛からあなたを救うでしょう、そして、私の経験では、異なるレベルの知識を持つ人々のログを持つ大規模なプロジェクトでは避けられません。
単純なリリースプロセスを持つ小さなチーム、または非常に経験豊富なチームがある場合-これはすべて必要ではないかもしれませんが、dev
ブランチ。
そうは言っても、GitHubチームが理解しているのは、簡単なコードレビューの後に、GitHubチームが直接マスターにマージし、1日に最大30回自動デプロイすることです。
一般的なアウトラインはいいですね。私が変更する唯一のことは、ベースボックス自体が自動更新されることです。おそらく、プロビジョニングスクリプトもgitにあるため、適切に構成された/etc/rc.local
スクリプトによってボックスを自動的に更新できます。ベースボックスには、起動に必要な最低限のものがあり、構成に必要なすべての部分をダウンロードする必要があります。これにより、ボックスの配布を実際の更新プロセスから切り離すことができ、OSのアップグレードを除いて、変更を行うたびに新しいベースボックス全体を出荷する必要がなくなります。