前回、ローカル・リモートそれぞれで更新管理用git・本番環境用gitを構築しました。
でも、commit・push・pullをしてやっとweb公開されるというちょっと手数が多い感が…。ということで、pullを自動化!
修正のフローをおさらい
- 1.ローカルで修正してcommit
- 2.リモートの更新管理用にpush
- 3.リモートの本番環境で、更新管理用からpull
wordpressのアクションフックやフィルターフックみたいに、
gitにもコミットやプッシュの前後に処理を挟み込むことができます。それがhooksです。
hooksというフォルダの中にある、〇〇.sample というファイルがフックスクリプトです。このファイルにスクリプトを書き、ファイル名を変更すれば動作します。
pushするだけでOK!な、pullの自動化をするよ!
今回は『push』された後(正確には全てのブランチが更新された後)に処理をさせたいので、post-receive.sample というファイルを編集して使います。
自動化させるための方法
『push』されるのは更新管理用gitなので、この中のpost-receiveを修正していきます。
post-receive.sample ファイルを 編集用にリネームする
pushされるサーバー側で以下を行います。
[shell toolbar="true"] $ cd ~/git/test.git/hooks/ $ mv post-receive.sample post-receive [/shell]
1行目:hooksフォルダに移動
2行目:post-receive.sampleというファイルを、post-receiveというファイル名に変更
ファイル名を変えた、post-receive を編集する
[shell toolbar="true"] $ vi post-receive (『i』と入力すると文字入力可能になります) [/shell]
入力する内容は以下。
[shell toolbar="true"] #!/bin/sh cd ~/web/サイト名/wp-content/themes/ git --git-dir=.git pull origin master [/shell]
3行目:本番環境gitに移動
4行目:本番環境gitで、origin(更新管理用git)からpullするスクリプト
4行目の、--git-dir=.git は、これ記述しないと「ここはgitリポジトリじゃない!」と怒られるらしいです。
入力したら、以下の様にして保存します。
『Esc』・・・文字入力モード終了
『:wq!』・・・保存して終了
post-receive ファイルの権限を変えます。
[shell toolbar="true"] chmod +x post-receive [/shell]
完了★
あとは試しにpushしてみて、pullされたか動作確認してみてください。
ちなみに、私はhetemlとロリポで動作確認できました~(´ω`*)ヨカッタ~
gitの本ならこれがオススメです。
[itemlink post_id="1467"]
[itemlink post_id="1466"]