GitHub や BitBucket などの Git ホスティングサービスの Hook や Webhook サービスを使って、Git に Push した時、自動的にサーバー側でに最新版の master ブランチを pull するための PHP を拾ってきて、ちょっと改造しました。
大きいプロジェクトであれば、きちんとちた CI/CD サービスを使いましょう。
続きはブログ記事で
最初 Qiita を使って書いていたのですが、ちょっと大掛かりになりすぎたので、ブログに移行します。
http://ja.katzueno.com/2019/08/3712/
豆知識: Hook とは
Git には、標準で hook と呼ばれる機能があります。アクションの各段階において、シェルスクリプトを実行できるものです。
UNIX系の OS を使っていて黒い画面に詳しい人は、詳しくは、
- 「[7.3 Git のカスタマイズ - Git フック](http://git-scm.com/book/ja/v1/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF
%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF)」 - 「Git hooks まとめ」
- 「git hookでサイトを更新、やってみた」
を見ると、いろいろできます。
豆知識: Webhook とは
Git の hook は Mac を含めた UNIX 系のPCで黒い画面を使いこなしている人しか恩恵はありませんが、Web関係者で Git を使って楽をしたい人にオススメなのが、GitHub が提供している Webhooks や、 BitBucket の Hooks 機能です。
例えば GitHub や BitBucket でこの機能を使いこなすと、Git で master ブランチ Push された時に、自動的に本番サーバーに Git の情報を Pull して FTP でアップする必要がなくなります。
これを高度に活用すると、例えば develop という名前のブランチを、開発環境サーバーに自動的に Pull できたり。
また Push された時に、本番や環境サーバーでも Grunt とか Gulp とかの自動タスクをを本番サーバーでも走らせたりなどを行うことが出来ます。
Webhook を PHP スクリプトを使って、自動的に git pull されるスクリプトを見つけて、ちょっと改造してみた。
いろいろ探してたんですが「Using Bitbucket for Automated Deployments」というブログ記事をのサンプルを見つけさせていただきました。
ちと改変しやすいように改造しました。
サーバー準備
まず、サーバーの準備が必要です。
サーバーには
- Git がインストール
- 非公開 Git レポジトリを使う場合は、 SSH 公開鍵のサポート
が必要です。また、今日準備する Deploy コードは PHP を利用しているので、PHP が動くサーバーである必要があります。
2015/1 時点、日本のレンタルホスティングでは、SSH 公開・非公開鍵を使って、非公開 Git レポジトリからもやりとりできるのは VPS などのサービスしか対応していないと思います。他にできた人、ご指摘お願いします。
Git レポジトリを作成 & .gitignore ファイルを作成
Git レポジトリを作成し、concrete5 や WordPress などの CMS サイトを使っている人は .gitignore ファイルを作りましょう。
参考までに、WordPress や concrete5 に最適化された gitignore ファイルのサンプルを置いておきます。
ここでは、
- concrete5 の files 以下のファイル郡を無視
- WordPress の wp-contens/uploads/ フォルダ以下のファイル郡を無視
- 後述の deployment.php と deployment.log を無視
- 追加アドオンやプラグインはあえて保存
- WordPress や concrete5 の本体もあえて管理
- しています。適宜編集してやってください。
実際のコードはブログの方で掲載。
Deploy 用公開鍵を GitHub や Bitbucket に登録
各サーバーで、Deploy 用公開鍵を生成します。
下記ステップの詳しくは「4.3 Git サーバー - SSH 公開鍵の作成」を参照。
-
cd ~/
-
mkdir .ssh
(.ssh ディレクトリが作成されていない場合、作成済みの場合はcd ~/.ssh/
) -
ssh-keygen
-
鍵の保存先はデフォルトのまま「.ssh/id_rsa」を指定
-
パスフレーズは空のまま。そのまま「改行 (Return)」キーを2回押す
-
cat ~/.ssh/id_rsa.pub
で表示されるキーをコピーして、GitHub や BitBucket にコピー -
GitHub や BitBucket の該当ページに公開鍵を登録
a. GitHub の登録場所
https://github.com/[自分のID]/[GitHubレポジトリ]/settings/keys
b. BitBucket の登録場所https://bitbucket.org/[自分のID]/[BitBucketレポジトリ]/admin/deploy-keys
サーバー上で git clone
サーバーのディレクトリで git clone [URL]
して、GitHub か Bitnucket からレポジトリをコピーします。
Deploy 実行用コードの設置
実際のコードはブログの方で掲載。
※ 最初 Qiita を使って書いていたのですが、ちょっと大掛かりになりすぎたので、ブログに移行します。コードのメンテ画面当臭くなると気がついたので・・・。すいません。
Deploy 実行URLを作成
長くなりすぎたのでブログに移行。
GitHub や Bitbucket で URL の設定
長くなりすぎたのでブログに移行。
テストして deployment.log を確認
長くなりすぎたのでブログに移行。