Web開発のGITワークフロー


12

ずっと前に、私が仕事をしている小さなWeb開発者チームは、Web開発にgitを使い始めました。当時は、ステージングまたはマスターに直接コミットし、2つの間で頻繁にマージしていました。それは何もないよりはましでしたが、混乱でもありました。

少し前に、gitflowワークフローを採​​用しました。それは確かに前に来た混乱よりも優れていますが、やや面倒で過度にリリース/マイルストーン指向です。私の仲間の開発者は、それがどのように機能するのか、何をマージすべきか、何をマージすべきでないのかを明確にするように頻繁に頼まれます。一般的に、リリースの特定のマイルストーンを追跡せずにコードを頻繁にデプロイするWeb開発作業には適さないようです。

友達の最近の提案で、GitHub Flowを見始めました。ここでスコットチャコンの投稿を読むと、これで問題が完全に解決されます。

それでは、なぜGitHubでgit-flowを使用しないのでしょうか?まあ、主な問題は、常に展開することです。git-flowプロセスは、主に「リリース」を中心に設計されています。運用環境に毎日(多くの場合1日に数回)展開するため、実際には「リリース」はありません。

FWIW、私はアトラシアンのサイトでこの素敵なワークフローのまとめを見ました:https ://www.atlassian.com/git/workflows#!workflow- feature-branch

しかし、それらはすべて、小さなチームでのWeb開発には不適切な選択肢のように見え、頻繁な/毎日のリリースではなく、主要なアプリケーションリリースを対象としています。

これは、git-flowとgithub-flowを比較するよう求めるSEに関する質問です /programming/18188492/what-are-the-pros-and-cons-of-git-flow-vs-github -フロー

それは一般的に良い答えですが、下のコメントで言及したように、meta.programmers.SEは一般的なワークフローのベストプラクティスに関する質問がここにあることを示しているようで、単なるgit-flowやgithubよりも幅広い回答のリストを期待していました-ウェブ開発に固有のフロー。したがって、ここで新しい質問が必要だと思います。

それで、かなり継続的な展開を伴うプロジェクトに取り組んでいる小規模なWeb開発チームにとって、最適/推奨のgitベースのワークフローは何ですか?それはgithub-flowか何かですか?


:ところで、私はこれに基づいてProgrammers.SEにここにこの質問を入れているmeta.programmers.stackexchange.com/posts/6312/revisions
jb510

あなたの研究を共有することは皆を助けます。あなたが何を試みたのか、なぜあなたのニーズに合わなかったのか教えてください。これは、あなたが時間をかけて自分自身を助けようとしていること、明白な答えを繰り返すことから私たちを救うこと、そして何よりもあなたがより具体的で関連性のある答えを得るのを助けることを示しています。参照してください掲載する方法
GNAT

@gnat私はその点でこれ以上何を共有できるかわかりませんか?リリース指向のgitflowは扱いにくいです。GitHub-Flowは毎日の展開に適しているとされていますが、数十のブランチがマージされるのを待っていることも混乱のようです。「XはWeb開発者にとってYは素晴らしい」と答えることを望んでいました。それは私が提供したリンクで十分にカバーされています、私はそれから引用を抜粋できると思いますか?
jb510 14

1
@gnat-質問を完全に書き直して、より多くの研究を示し、探している答えについて非常に具体的にしました。
jb510 14

回答:


7

最初に、あなたが検討したさまざまなワークフローの簡単な要約を作成したいと思いますが、あなたが取り組んでいる種類の開発には適していないと思います:

  • 一元化ソース):SVNワークフローに非常に似ていますが、現在は分散環境上にあります。すべての開発者は個人的なコピーを作成し、直接またはプルリクエストを介してmaster変更をプッシュしますorigin/master

  • 機能ブランチソース):そうですね。特定の機能で作業するすべての開発者は、その機能専用の特定のブランチで作業する必要があります。この機能ブランチはmaster、別の機能ブランチから作成する必要があります。最終的にはすべてがにマージされmasterます。

  • Gitflow出所):二つの主要な枝は、プロジェクトの履歴を追跡し、developそしてmaster。別の3つのブランチはhotfixreleaseと呼ばれ、重要な生産バグの修正、リリース前のバージョン番号やその他の詳細の変更、またはFeatureブランチと同様に特定の機能の作業のためにfeature直接行われたmaster変更をそれぞれ保持します。

  • GitHubフローソース):開発者はからfeatureブランチを作成しますmaster。変更はプル要求を介してプッシュされます。受け入れられた変更はmaster 、GitHubボットHubotによって直ちに展開されます。

質問の開発部分については、答えはチームの背景によって異なります。それらはSVN環境から来ていますか?次に、SVNに最も似ているので、集中型アプローチを使用する必要があります。彼らはGitで快適に作業できますか?その場合、チームのワークフローをそれらのいずれかに適合させるのではなく、ニーズに合わせて作成された独自のワークフローを実装する必要があります。

また、後者の改善に集中する必要があると思います。展開パイプラインはどのように構成されていますか?「継続的デリバリー:ビルド、テスト、およびデプロイメントの自動化による信頼性の高いソフトウェアリリース」では、著者はまれなデプロイメントの考えられる原因を特定しています。

  • 展開プロセスは自動化されていません。
  • テストには時間がかかります。
  • 人々はビルド/テスト/展開プロセスを理解していません。
  • 開発者は、小さな段階的な変更を加えることでアプリケーションの動作を維持することについて規律を守られていないため、既存の機能を頻繁に破壊する

それらのどれかがあなたが改善できる何かのように聞こえますか?おそらく、あなたとあなたのチームがプロジェクトのこの部分をどのように処理するかについてもう少し教えていただけますか。


2
+ 1、cdの鍵はgitまたはgitflowではなく、CIおよび配信ワークフローです。
ワイアットバーネット14

これについてたくさん考えています。洞察力をありがとう。FWIW、CIを使用しないため、CIという用語の使用は特に避けています。あるべきかもしれませんが、そうではありません。特定の週、短期、長期に取り組んでいる数十のプロジェクトにとっては面倒です。
jb510 14

2
@ jb510-同様のプロジェクト設定があります。CIなしで飛行することは夢ではありません。ダムであるが壊れやすい部分をすべてスクリプト化すると、コンテキストの切り替えが非常に簡単になります。
ワイアットバーネット14

1
CIを簡単に実装できないことは、プロジェクトでCI がどれだけ必要かを示す兆候である場合があります。単体テストはありませんか?すべてのマニュアルを展開しますか?面倒な展開手順がたくさんありますか?検査が必要です。
クズカイ

1
私は長年にわたってこの質問と回答を追ってきました。他の人も答えを提供してくれることを期待していましたが、これはそれ自体が素晴らしい答えなので、最終的に受け入れられたとマークします(おそらくかなり前にそれを行っていたはずです)
-jb510
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.