Gitのプロダクション/ステージングサーバーのワークフロー


108

現在、私のウェブサイト(本番サーバー)にはすでに多くのコードが含まれています。そして今、私は自分のプロジェクトでGitを使い始め、私のチーム用にステージングサーバーをセットアップしたいと考えています。誰か私にアドバイスを与えることはできますか?

ここに私の心の絵があります:

        Production        - Production server which already have codes
            ↑             
         Staging          - New staging server, will install Trac too
         ↗↙ ↖↘          
  Developer1  Developer2  - Local development 

私の質問は、どのように始めればよいですか?

ここに私の心のいくつかのステップがあります:

  1. 行うgit init(これも安全である?)本番サーバーに
  2. clone 運用サーバーからステージングサーバーへのリポジトリ
  3. cloneステージングからローカルマシンへのリポジトリの開発者
  4. push 変更終了後のステージングサーバーへのファイル
  5. ステージングの準備ができたら、pushすべてを本番に

このワークフローは理にかなっていますか、それとももっと良い方法がありますか?

1つのファイルのみを変更する場合はどうなりますか?

オリジン/マスターはこのプロセスでそれと何か関係がありますか?起源は誰ですか?結局複数のオリジンを持つことになりますか?

また、branchこの場合、開発者はいつ使用すべきですか?

回答:


59

ステージングの本番および開発ブランチにのみマスターブランチを使用することをお勧めします。各開発者は、ローカルブランチを作成して新しい機能を追加してから、開発ブランチとマージする必要があります。gitを初めて使用する場合は、使用してみてください-http://github.com/nvie/gitflow gitブランチモデルを説明する良い画像もあります-http://nvie.com/posts/a-successful-git-分岐モデル/


これはより良い答えです。私はGitブランチの概念にあまり詳しくありませんでした。
kayue

@バグ。開発ブランチ->ステージングシステムへのプッシュマスターブランチ-> 運用サーバーへのプッシュについて詳しく説明しているリソースへのリンクはありますか?優れた記事「成功したGitブランチモデル」では、ブランチとバージョニングの非常に優れた概念について触れていても、その部分については触れていません。
Edgar Alloro

19

あなたの提案は問題ないように見えますが、開発者がステージングサーバーに直接プッシュすることはできません。代わりに、インテグレーターはブランチを注意深く確認し、メインブランチ(またはbUgの提案に従ってgitフローモデルを使用する場合は開発ブランチ)に組み込む必要があります。*同じ人物がステージングサーバーにプッシュします。

* インテグレーター:「グループプロジェクトでインテグレーターとして活動するかなり中心的な人物が、他のユーザーによる変更を受け取り、それらをレビューして統合し、他のユーザーが使用できるように結果を公開します...


1.本番サーバーでgit initを実行します(これは安全ですか?)

はい、それは安全ですが、もちろん、このリポジトリに非常に限定的な権限を設定する必要があります。curlまだ持っていない場合は、おそらくWebサイト全体をローカルディスクに移動することから始めます。

2.リポジトリを本番環境からステージングサーバーに複製する

おそらく、本番サーバーとステージングサーバーの両方から分離された「中央」リポジトリが必要です。これは必要に応じて複製してプッシュできます。

3.開発者がステージングからローカルマシンにリポジトリを複製します

4.変更終了後にステージングサーバーにファイルをプッシュする

5.ステージングの準備ができたら、すべてを本番環境にプッシュします

「staging」を「central」に置き換えれば大丈夫だと思いますが、bUgが指摘しているように、ブランチとマージをどのように処理するかがより大きな問題です。


10
1:Gitリポジトリを本番環境で安全にするには、「すべて拒否」が含まれた.htaccessファイルを必ず追加してください。
カユー10:29に

2
2:Felixyzの「中央」リポジトリは、ベアリポジトリを指します。--bareコマンドを使用して、ベアリポジトリを作成します。
カユー10:31

1
@keyue 1:さらに良いことに、.gitignore.gitattributes、および.gitフォルダーを保護するためRedirectMatch 404 /\.gitに、本番.htaccessに追加します。
レオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.