序章

Gitの紹介とインストール方法については、紹介チュートリアルを参照してください。

この記事では、アプリケーションをデプロイするときにGitを使用する方法を説明します。 Gitを使用してアプリケーションをデプロイする方法はたくさんありますが、このチュートリアルでは、最も簡単な方法に焦点を当てます。 ローカルマシンでリポジトリを作成して使用する方法をすでに知っていると思います。 そうでない場合は、このチュートリアルを参照してください。

Gitを使用する場合、ワークフローは通常、バージョン管理のみを対象としています。 作業するローカルリポジトリと、すべての同期を維持し、チームやさまざまなマシンで作業できるリモートリポジトリがあります。 ただし、Gitを使用してアプリケーションを本番環境に移行することもできます。

サーバーのセットアップ

架空のワークスペース:

サーバーのライブディレクトリ: /var/www/domain.com

サーバーリポジトリ: /var/repo/site.git

site.git にプッシュし、同時にすべてのコンテンツを /var/www/domain.com で利用できるようにする場合は、どうすればよいですか?

リポジトリの作成

コマンドラインからVPSにログインし、次のように入力します。

cd /var
mkdir repo && cd repo
mkdir site.git && cd site.git
git init --bare

--bare これは、フォルダにソースファイルがなく、バージョン管理のみが含まれることを意味します。

フック

Gitリポジトリには、‘hooks’というフォルダがあります。 このフォルダーには、ユーザーが設定したカスタムアクションをフックして実行できる、可能なアクションのサンプルファイルがいくつか含まれています。

Gitドキュメントは、3つの可能なサーバーフックを定義します:‘pre-receive’ ‘post-receive’ ‘update’‘Pre-receive’ は、サーバーが‘push’ を受信するとすぐに実行され、‘update’ も同様ですが、ブランチごとに1回実行されます。 ‘post-receive’ は、‘push’ が完全に終了したときに実行され、これが私たちが関心を持っているものです。

次のように入力すると、リポジトリに次のように入力します。

ls

‘hooks’フォルダーを含むいくつかのファイルとフォルダーが表示されます。 それでは、‘hooks’フォルダーに移動しましょう。

cd hooks

次に、次のように入力して、ファイル‘post-receive’を作成します。

cat > post-receive

このコマンドを実行すると、入力したすべてのものがこのファイルに保存されることを示す空白行が表示されます。 それでは、次のように入力してみましょう。

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

入力が終わったら、‘control-d’を押して保存します。 ファイルを実行するには、以下を使用して適切な権限を設定する必要があります。

chmod +x post-receive

ドキュメントで、‘git-dir’がリポジトリへのパスであることがわかります。 ‘work-tree’ を使用すると、ファイルが実際に転送される場所への別のパスを定義できます。

‘post-receive’ ファイルは、プッシュが完了するたびに調べられ、ファイルが/var/www/domain.comにある必要があると表示されます。

ローカルマシン

ローカルリポジトリを作成しましょう。 パスと名前を選択した方に変更する必要があります。 VPSを使用している場合は、次のように入力します。

exit

そして、リポジトリを作成します。

cd /my/workspace
mkdir project && cd project
git init

次に、リポジトリのリモートパスを構成する必要があります。 ‘live’というリモコンを追加するようにGitに指示します。

git remote add live ssh://[email protected]/var/repo/site.git

ここでは、ライブフォルダではなくリポジトリリンクを指定する必要があります。

このフォルダにいくつかのすばらしい作業が用意されていると仮定しましょう。 ファイルを追加する通常の手順を実行し、メッセージを送信してコミットする必要があります。

git add .
git commit -m "My project is ready"

覚えておいてください。‘gitadd’ の後のドットは、すべてのファイルをステージに追加していることを意味します。 ‘git commit’ の後に、‘-m’ があります。これは、メッセージを入力することを意味します。 完了するには、すべてをサーバーに「プッシュ」するだけです。 リモコンの設定時に使用した‘live’エイリアスを使用します。

git push live master
Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (7/7), done.Writing objects: 100% (7/7), 10.56 KiB, done.Total 7 (delta 0), reused 0 (delta 0)To ssh://[email protected]/var/repo/site.git* [new branch]      master -> master

ここでは、Gitに‘master’ブランチの‘live’リモートにプッシュするように指示します。 ブランチとその使用方法の詳細については、このチュートリアルをお読みください。

ベータ

すべてを1つのステップでデプロイしたくない場合はどうなりますか? たぶん、最初にそれをテストして、ベータディレクトリを持ちたいと思うでしょう。

そのための方法の1つは、別のリポジトリを作成することです。 VPSに再度ログインして、ディレクトリを作成しましょう。

cd /var/www/
mkdir beta

リポジトリを作成するには:

cd /var/repo
mkdir beta.git && cd beta.git
git init --bare

ベータディレクトリにプロジェクトを表示したいので、ここでも‘post-receive’ファイルを作成する必要があります。

cd hooks
cat > post-receive

ファイルの内容を入力します。

#!/bin/sh
git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f

入力が終わったら、‘control-d’を押して保存します。 ファイルを実行するには、以下を使用して適切な権限を設定する必要があります。

chmod +x post-receive

ローカルリポジトリに戻りましょう。

exit
cd /my/workspace/project

これで、ベータリポジトリを指す別のリモートを設定できます。

git remote add beta ssh://[email protected]/var/repo/beta.git

これにより、2段階のプロセスを実行できます。 まず、ベータ版にプッシュしてチェックし、すべてが正常である場合は、ライブにプッシュします。

git add .
git commit -m "New version"
git push beta master

以降:

git push live master

サーバーから稼働する

同じプロジェクトで作業しているチームがいて、他の人もライブに移行する時期だと判断できるようにしたい場合があります。 これを行うには、サーバー上のベータ版とライブリポジトリをリンクします。 VPSにログインして、次のように入力します。

cd /var/repo/beta.git
git remote add live ../site.git

これで、ベータ版からサーバー上で稼働するようにプッシュできます。

cd /var/repo/beta.git
git push live master

おめでとう! これで、VPSがGitで自動的にデプロイされるように設定されました。

投稿者: Caio Vaccaro