サーバー上に。を使用してベアリポジトリを作成する必要がありますgit init --bare
。次に、post-receive
フックを使用してデプロイをトリガーします。どのように展開するかはあなた次第です。
私の展開戦略
私は通常deploy
、論理的な場所にディレクターを配置します。次に、チェックアウトするたびに、最新のブランチを解凍して、最新のプッシュのハッシュがdeploy/COMMIT_ID
どこにあるかを確認します。COMMIT_ID
チェックアウトが完了すると、シンボリックリンクを最新のデプロイメントディレクトリに再ポイントできます。
私の通常のディレクトリ構造:
deploy.git/
deploy/
a7922231/
b2f0a2af/
latest -> b2f0a2af
アップデートの解凍
を使用するのではなく、git-checkout
通常git-archive
、ブランチをディレクトリに解凍するために使用します。
# Assuming current directory is deploy.git
HEAD=`cat refs/heads/master`
mkdir -p ../deploy/${HEAD}
git archive master | tar -x -C ../deploy/${HEAD}
あなたのウェブサーバーは指すことができますdeploy/latest
、更新は多かれ少なかれアトミックになります。
私はこれを本番環境で頻繁に使用しますが、同じディレクトリで解凍するよりもいくつかの利点があります。
- ロールバックは簡単です
- 現在のデプロイメントを中断することなく、依存関係のコンパイルやインストールなどの解凍後の手順を実行できます
チップ
- 更新のたびに、更新がいつ発生したか、およびそれらのハッシュIDが何であるかを示す展開ログに追加します。これにより、ロールバックがはるかに簡単になります。