FuelPHPをRocketeerで簡単にデプロイする



FuelPHPをRocketeerで簡単にデプロイする

0 0


reveal-fuel-rocketeer

"FuelPHP & CodeIgniter ユーザの集い #3 (2014/02/15)" 用資料

On Github mamor / reveal-fuel-rocketeer

FuelPHPをRocketeerで簡単にデプロイする

FuelPHP & CodeIgniter ユーザの集い #3 on February 15, 2014

Mamoru Otsuka (@madmamor)

Outline

About Me 旧来のデプロイ Rocketeer Rocketeerのデプロイイメージ FuelPHPでRocketeer デモ

About Me

Name : Mamoru Otsuka WEB : http://madroom.net/ Twitter : @madmamor Facebook : mamoru.otsuka Blog : madroom project GitHub : @mamor Android Apps : madroom project Location : TAMACEN & SYIBUYA

旧来のデプロイ

  • FTPで手動アップロード
    • ヒューマンエラーが出やすくなる
    • 最新の状態がレポジトリとズレる
  • 独自スクリプトで自動化
    • スクリプトのメンテナンスが大変になる
    • 作った人がいなくなるとよくわからなくなる

そこで

  • Capistranoを使う
    • 最も使われていると思われるデプロイツール(Ruby製)
    • 簡単な手順なら設定だけでデプロイを自動化できる
    • でも、ComposerやPHPUnitを実行するにはカスタムタスクが必要
    • カスタムタスクはRubyで書く(そんなに難しくはないけど)
    • (PHPプロジェクトにこっそり導入するとチーム内で文句が出そう)

PHPプロジェクト向けに特化したCapistranoっぽいツールはないの?

Rocketeer

  • PHPプロジェクト向けに特化したCapistranoっぽいツール
  • PHP製
  • MITライセンス
  • 読み方は「ろけってぃあ」意味は「ロケットを飛ばす人」みたいな
  • 公式: http://rocketeer.autopergamene.eu/
  • GitHub: https://github.com/Anahkiasen/rocketeer
  • ComposerやPHPUnitの実行にも標準対応
  • カスタムタスクもPHPで書ける
  • GitHubのスター数691(2014/02/14現在)
  • Maxime Fabre氏が開発
  • 2013年6月、v0.1がリリース
  • 2014年1月、v1.0がリリース
  • 2014年2月14日現在、v1.1.2

Rocketeerのデプロイイメージ

手元(ローカル)で発射ボタンを押す(コマンドを打つ) ミサイル(レポジトリのソース)が飛ぶ 遠隔地(リモート)に着弾(デプロイ)する

精度の高い弾道ミサイルみたいな感じ?

同名のSF漫画もあったみたいです。http://bit.ly/1fc8wAi

(ウ◯トラマン)

具体的には

デプロイ先にSSHでログイン 実行したいカスタムタスクがあれば、実行 (before deploy) git clone (サブモジュール含む) composer install (composer.lockはバージョン管理しておきましょう) PHPUnitを実行したければ、実行。失敗したらデプロイ中止 ログディレクトリ等のパーミッションを調整 ログディレクトリ等、デプロイを跨いでの共有化 実行したいカスタムタスクがあれば、実行 (before symlink)カスタムタスクが false を返せばデプロイ中止(v1.1から) grunt + jasmine とか組み込めます symlink を張り替えて、デプロイ完了 実行したいカスタムタスクがあれば、実行 (after deploy)このタイミングで grunt + jasmine とかやってもデプロイは既に完了しているのであまり意味無いです

FuelPHPでRocketeer

下準備

ローカルでやっておくこと

php.ini で "phar.readonly = Off" デプロイしたいFuelPHPプロジェクトをGitHubやBitbucketにコミット

リモート(デプロイ先)でやっておくこと

Git, PHP(とmcrypt extension), Composerのインストール (Composer はプロジェクト直下の composer.phar でも良いかも) ~/.ssh/config に "StrictHostKeyChecking no" (あるいは、一度手動でcloneして、ホストの登録をしておく) デプロイ先のpublicディレクトリへのsymlink

RocketeerのDLと設定ファイルの生成

http://rocketeer.autopergamene.eu/versions/rocketeer.phar から rocketeer.phar をDL (rocketeer.phar は自身に認証情報をキャッシュするので .gitignore でバージョン管理しないようにした方が良いかも) コマンドで "php rocketeer.phar ignite" と打ち、設定ファイルを生成

以下の設定ファイルが生成されます。(rocketeer/tasks.phpを除く)

  • .rocketeer/config.php ... リモートの接続情報等を設定する
  • .rocketeer/hooks.php ... 今日のデモでは使っていません
  • .rocketeer/paths.php ... PHP, PHPUnit, Composer 等のパスを設定する
  • .rocketeer/remote.php ... デプロイに関する様々な設定をする
  • .rocketeer/scm.php ... レポジトリの設定をする
  • .rocketeer/stages.php ... 今日のデモでは使っていません
  • .rocketeer/tasks.php ... カスタムタスクを登録する

これらの設定ファイルとカスタムタスクを組み合わせてデプロイします

デモ

https://github.com/mamor/fuelphp-advent-calendar-2013-rocketeer-sample を使って

http://madroom-project.blogspot.jp/2013/12/fac20131221.html のようなことをデモしてみます。

ご清聴ありがとうございました。