参考にさせて頂いたページ
Bitbucketからさくらのレンタルサーバ(スタンダードプラン)へ自動デプロイ | Berry22.com
前提として
phpからシェルスクリプト(git pull)を実行する方法
準備段階として、
さくらのレンタルサーバスタンダードでphpからシェルスクリプト(git pull)を実行する - MOTOMICHI WORKS BLOG
という記事を先日書いた。
サーバにログインして、手で
php run-the-shell.php
のコマンドを実行する事で、git pullする方法について書いた。
これが正常に実行できる状態までやっておくと、次のステップが楽かなと思ってやってみた。
上記の記事を発展させて
今回はBitbucketのWebhooksから、run-the-shell.php
と同様の処理を実行すれば良さそう。
Bitbucketからさくらのレンタルサーバ(スタンダードプラン)へ自動デプロイ | Berry22.com
を参考にさせて頂きながら、進めていきます。
deployディレクトリを作成
deployディレクトリを、公開ディレクトリの直下に作成した。
コントロールパネルから、ベーシック認証を設定する
以下のURLを参考に、deployディレクトリに対してベーシック認証を設定した。
ファイルマネージャーでアクセス制限をする|さくらインターネット公式サポートサイト
deploy.phpの作成とその記述内容
参考ページにならって、$secret_key
と、それを評価するif文を追記したので、以下のようになった。
<?php
$secret_key = "任意の文字列";//Bitbucketからkey=〇〇として渡す文字列
if($_GET[key] === $secret_key){
$cmd = '/home/ユーザ名/shellscript/git-pull.sh';
//git-pull.shを実行して結果を取得
$res = system($cmd);
//deploy.log("ファイルパス","モード");
$fp = fopen("/home/ユーザ名/log/deploy.log", "a");
//日時を書き込み
fwrite($fp, date('c')."\n");
if (false === $res) {
//実行結果がfalse
fwrite($fp, "cmd false\n");
} else {
//コマンド実行結果を書き込み
fwrite($fp, $res."\n");
}
//deploy.logを閉じる
fclose($fp);
}
?>
deploy.phpの配置
さきほど作成したdeployディレクトリにdeploy.phpを配置した。
deploy.phpを手で実行してみる
deploy.phpのif文のところをコメントアウトするとかTRUEになるようにするとかしたあと、ターミナルでサーバーにログインして、deploy.phpがあるフォルダに移動する。
php deploy.php
を実行して、git pullが実行されるようであれば大丈夫。
Permission deniedとか表示されるようであれば、パーミッションの変更が必要。
無事にgit pullが実行できたら、if文はもとに戻しておく。
SSLの利用設定をする
SSLの利用設定がまだの場合は
を参考に共有SSLを利用する設定にして、httpsのURLが使えるようにする。
BitbucketのWebhooksを設定する
リポジトリを選択して、Settings > Webhooks > Add webhook
の順にクリック。
Titleには任意の文字列
URLは参考ページにならって、https://【Basic認証ID】:【Basic認証パスワード】@【ドメイン】/deploy/deploy.php?key=【$secret_keyと同じ文字列】
次にTriggersから任意のトリガーを選択する。
Repository push
のラジオボタンを選択しておくと、リポジトリに対してPushしたときや、プルリクエストをマージしたときなどに、設定したURLにリクエストが送信されるみたい。
動かしてみる
Bitbucketでプルリクエストをmasterに対して送って、マージするとdeploy.phpが実行される。