gitを使用したリモートプッシュによる自動デプロイ
- web
- 2018.09.26
- nisshi No.000139
hetemlでリモートの管理リポジトリへプッシュし、公開リポジトリへ自動pullするための設定。
何度もやる作業でないため、度々忘れてググる羽目になるのでメモ。
hetemlへのssh接続
まずこれが最初のど忘れポイント。
下記ですね。
ssh -p 2222 [heteml account]@ssh[number].heteml.jp
ssh -p 2222 [heteml account]@ssh[number].heteml.jp
秘密鍵・公開鍵で接続する場合下記参照。
ssh heteml
でログインできる。
[hetemlで公開鍵を使う方法 – Qiita](https://qiita.com/ikedahidenori/items/64c9eb82b5b44f735a4b)
[SSHなるものをよくわからずに使っている人のための手引書 – Qiita](https://qiita.com/kenju/items/b09199c4b3e7203a2867)
ディレクトリ構成
自分の環境では下記のようにしている。
~/git/project.git – 管理リポジトリ(push先)
~/web/project/ – 公開リポジトリ
管理リポジトリの作成
ssh接続後、管理リポジトリを作成。
cd ~/git/
mkdir project
cd project
git init –bare –shared
公開リポジトリの作成
次に、web公開領域へ管理リポジトリをclone
cd ~/web/
git clone ../../git/project
hookを設定
[Git – Git フック](https://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)
hookとはつまりgit上で特定のアクション(今回はpush)を行った際に追加で走らせるスクリプト。
リモートpush時に発生するhookには下記3種類がある。
pre-receive : push実行前に処理(ユーザチェック処理等)
post-receive:push実行後に処理(通知処理等)
update:pre-receiveをブランチごとに実行
今回はpost-receiveを設定する。
#!/bin/sh
cd ~/web/project; //公開ディレクトリへ移動し
git –git-dir=.git pull //管理ディレクトリからpull
–git-dir= はgitディレクトリ外からコマンド実行する際のおまじない。
[Gitディレクトリ外からgitコマンドを実行する – Qiita](https://qiita.com/paty-fakename/items/d592806b6a4d5d2a4b55)
gitバージョンにより2通り書き方があるようだが、
hetemlの現在のgitバージョンは1.7.1のため、上記の通りになる。
また、忘れがちだがpost-receive は実行形式でなければならない
chmod a+x post-receive
ローカルリポジトリ
リポジトリ作成は省略。
先程設定したリモートの管理リポジトリへのパスは下記の書式。
ssh://[hetemlaccount]@ssh[number].heteml.jp:2222/home/sites/heteml/path/to/home/git/project.git
あとはリモートへpushすればOK。