LoginSignup
79
88

Bitbucket や GitHub で自動デプロイするためのサンプル PHP スクリプトを拾って改造してみた

Last updated at Posted at 2015-01-02

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 を使っていて黒い画面に詳しい人は、詳しくは、

を見ると、いろいろできます。

豆知識: 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 公開鍵の作成」を参照。

  1. cd ~/

  2. mkdir .ssh (.ssh ディレクトリが作成されていない場合、作成済みの場合は cd ~/.ssh/)

  3. ssh-keygen

  4. 鍵の保存先はデフォルトのまま「.ssh/id_rsa」を指定

  5. パスフレーズは空のまま。そのまま「改行 (Return)」キーを2回押す

  6. cat ~/.ssh/id_rsa.pub で表示されるキーをコピーして、GitHub や BitBucket にコピー

  7. 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 を確認

長くなりすぎたのでブログに移行。

79
88
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
79
88