【Github】Webhookを使用してサーバーへ自動デプロイする方法

Githubを使用してサーバーへ自動デプロイする

GithubのWebhookという機能を利用して、
ローカルリポジトリでのコミット内容を公開サーバーのリモートリポジトリから自動的にプルして更新する方法をメモします。

公開するサイトのソースをGithubへホスティングし、
ローカル開発環境とサーバーの公開ディレクトリへそれぞれリポジトリをクローンしておきます。

Githubリポジトリをサーバーへクローンする手順はこちらの記事で解説しています。

Githubリポジトリをリモートサーバーにクローンする

環境:さくらのレンタルサーバ スタンダードプラン、 git version 2.23.0(インストール済み)、
Mac 10.13.6、 Sourcetree 2.7

デプロイ実行用ファイルを作成

デプロイを自動実行するためのphpファイルをサーバー上へ作成します。

なお、今回はリモートリポジトリのパスを
※/home/(アカウント名)/www/mysite/repositoryとし、

作成するファイルはリポジトリの親階層直下へ
/home/(アカウント名)/www/mysite/deploy.php
として作成します。

※さくらのレンタルサーバー、公開ディレクトリは/home/(アカウント名)/www

/home/(アカウント名)/www/mysite/deploy.php

<?php
chdir("./repository");
exec('git pull');
?>

後述するWebhookにより、ローカルリポジトリでのプッシュ時にこちらが呼び出され、
リモートリポジトリ内でgit pull コマンドが実行される仕組みとなっています。

(補足)1行目
exec(‘cd ./repository’) では階層移動が上手く行かないようでした…
chdir関数でリポジトリへ移動します。

Webhookの設定を行う

Githubを開き該当のリポジトリのページから、Settings > Webhooksを選択、Add webhookをクリックし下記の画面で設定を行う。

Payload URLへ、作成したphpファイルの実行URLを指定します。

今回はパスを/home/(アカウント名)/www/mysite/deploy.phpとしたので、
http://XXXXX.sakura.ne.jp(サーバードメイン)/mysite/deploy.php
となります。
「Just the push event」へチェックが入っていれば、ローカルでのコミットプッシュ時に
Paylad URLへ指定したURLが実行されます。

Add webhookで保存

Webhookへ登録されている。

ローカルリポジトリでプッシュしたコミット内容がサーバーへ反映されていれば設定完了です。

参考
GitとSourceTreeではじめるバージョン管理と自動デプロイ
さくらサーバへのWebhookでのGit自動化の悪戦履歴

Follow me!