6

最近、開発者がどこからでも作業できるようにし、次に全体的な展開プロセスを自動化できるようにすることを目標に、GITの調査を開始しました。

テストやデモの目的ですべてのアプリ/サイトをホストする中央テストサーバーがあり、開発とテストが完了したら、アプリケーションをそれぞれのライブサーバーに移動します。

GITで設定したものは、次のとおり
です。1.テストサーバーでベアリポジトリを作成します
。2。関係する開発者ごとにローカルクローンを取得します。開発者はリモート(テストサーバー)開発ブランチにプッシュします。3
。誰かがからのすべての変更をマージします。 devブランチをmasterブランチにプッシュし、リモート
4にプッシュします。テストサーバー(bare repo)にはpost-receiveフックがあり、masterブランチをpublic_htmlフォルダーにチェックアウトします(GIT_WORKING_DIRとcheckout -fを使用)。

今のところ、すべてが正常に機能しており、ホストされているページのマスターブランチでマージを確認できます(もちろん、テストサーバー上で)。今私の質問は...
1。私はこれを正しくやっていますか?
2.私が設定した受信後フックは、devブランチへのプッシュでも実行されると思います。これを回避する方法は?
3.これらのコンテンツをライブサーバーに送信するにはどうすればよいですか?コードベースが大きいプロジェクトがいくつかあるので、テストサーバーですべてをチェックしてから、ライブで出荷するだけでは十分ではありません。

CIサーバーについて聞いたことがありますが、私が知っている限り、ローカルでチェックアウトし、「rsync」(変更を同期するだけなのか、すべてをアップロードするだけなのかわからない)またはそのようなツールを使用してすべてをライブにアップロードします。何か問題が発生した場合は、すべての部分を避け、ロールバックのオプションを開いたままにしておきたいだけです。ライブサーバーでgitを設定するのは得意です。

4

1 に答える 1

7
  1. はい。「 gitpushでハードリセット」で他の考慮事項を確認できます。
  2. コミットを受信するときに、ブランチの名前をテストできます。「特定のブランチを処理するためのgitpost-receiveフックの作成
    branch=$(git rev-parse --symbolic --abbrev-ref $refname) 」も参照してください。
  3. rsyncは通常ライブサーバー(gitが不要な場合)に推奨されます:変更されたものだけを更新します。
    ライブサーバーでgitを使用している場合は、「WebサイトのGit/受信後/テストサイトと本番サイトの分離」でさまざまなアプローチについて説明します。

デプロイに関しては、「rsync(またはsvn、git、cvs)を使用してデプロイし、デプロイ中に一貫性のない状態を無視しますか? 」に見られるように、のディレクトリに(すべてでも)デプロイし、prodインスタンスをそのディレクトリにシンボリックリンクすることは回避するための良い方法です展開中の不整合、および問題が発生した場合のロールバック(前のライブディレクトリへのシンボリックリンク)を容易にするため。

于 2012-11-04T10:18:09.127 に答える