読者です 読者をやめる 読者になる 読者になる

githubにpushしたらサーバーに自動で同期される感じのやつ

いろいろとやってもうまくいかなくて時間を浪費していたところ@u3g3が助けてくれたのでメモっときます。

phpのほう

†ありがとう@u3g3

github webhook を利用した、push すると自動で git pull する感じのアレ

これを適当に編集して外部からアクセスできるところに置いておく。

4行目にこのphpをたたくためのパスワードをセット、5行目にはリポジトリの名前をセット。

自分はgit pullする準備ができてなかったので45行目をrm -rf /var/www/リポジトリ名; git clone https://github.com/eai04191/リポジトリ名にしました。毎回全部ダウンロードするのでできればpullのほうがいいと思います。

あたりまえですがサーバーにgitとかは入れておきます。

追記 15/01/25

パッと見いい感じなんですがrm -rfで消し飛ばしてからcloneが終わるまで404になってしまいます。pullならそんなことないんですけどね。githubからpullする方法がわからないので原始的な方法で解決します。

そこで45行目以降を改良しました

    `
sed -i '1s/^/cloning\n/' /var/www/status.gochiusa.net/index.php;
cd /var/www/git/;
git clone https://github.com/eai04191/status.gochiusa.net.git;
cd /var/www/;
rm -rf status.gochiusa.net;
cd /var/www/git/;
mv status.gochiusa.net ../;
   `

gitディレクトリに先にcloneしてからもともとあったのを消して最新版を移動しています。

1行目のsedはindex.phpの先頭に「cloning」と追記してるつもりなのですがなぜか動作していません。(原因不明。)

サーバー内での移動は少なくともcloneよりは短時間なので404になっている時間を減らすことができました。

リポジトリのほう

SettingsWebhooks & ServicesAdd webhook

Payload URLphpのURLを書く。

Secretにさっきのパスワードを書く。

おわり。

pushしてみて自動でcloneなりされれば完了。