Capistranoで簡単デプロイ -開発用サーバー編-
やりたいこと
今までの流れは以下のとおりでした。
- [1]ローカルマシンで開発&テスト
- [2]ソースをコミット
- [3]開発用のサーバーにログインしソースを最新にする
上記だと面倒&ダサい。
というわけで、上記の[3]の箇所を以下のように変更。
- [3]Jenkinsでソースをチェックし開発用のサーバーのソースを最新にする
今回は開発用のサーバーなので、常に最新のソースになるようにしています。
本番用は開発用とは違って、コマンドを叩いて最新のソースにするようにしてます。
環境説明
今回、利用したのは以下の2つ
- Capistrano
- Jenkins
Jenkinsのインストールは以下を参考にしてください。
やったこと
Capistrano側
以下のようにファイルを用意
#基本定義 set :user, "sshでログインするユーザー" set :password, "パスワード" set :svn_repo, "svnのリポジトリパス" set :svn_pass, "svnのパスワード" set :checkout_dir, "チェックアウトしたソースを置く場所(例:/home/checkout)" set :deploy_dir, "ソースを設置する場所(例:/home/sample)" set :deploy_user, "ソースを設置している場所の権限(apacheが良い)" set :deploy_group, "ソースを設置している場所の権限(apacheが良い)" # サーバ定義 role :dev, "localhost" default_run_options[:pty] = true # checkoutタスク task :checkout_, :roles => [:dev] do sudo "rm -rf #{checkout_dir}" sudo "mkdir #{checkout_dir}" sudo "svn co --username #{user} --password #{svn_pass} #{svn_repo} #{checkout_dir}" sudo "chown -R #{user} #{checkout_dir}" sudo "find #{checkout_dir} -name ".svn" -type d | xargs rm -rf" end //svnからチェックアウトする1行を書き忘れてました[2012/06/13]。 # uploadタスク task :upload_, :roles => [:dev] do sudo "rm -rf #{deploy_dir}" sudo "cp -rp #{checkout_dir} #{deploy_dir}" sudo "chown -R #{deploy_user}:#{deploy_group} #{deploy_dir}" end # phpcsタスク task :phpcs_, :roles => [:dev] do sudo "phpcs --report=summary --report-checkstyle=checkstyleの結果ファイルを置く場所 --standard=Zend --extensions=php コーディング規約対象の場所(例:/home/sample/app/controllers) | id" end task :deploy_, :roles => [:dev] do checkout_ upload_ phpcs_ end
簡単に説明すると以下のようなことをやってます(参考サイト[1]をかなり参考にしてます)。
- checkout_タスク
- SVNからソースをチェックアウト
- チェックアウトした際に出来る.svn関連を全て削除
- upload_タスク
- 最新ソースを指定した場所にコピー
- phpcs_タスク
- PHP用コーディング規約ツールでチェック
- ただしエラー、警告があっても止まらないようにするために|idをつけている
- PHP用コーディング規約ツールでチェック
Jenkins側
設定で以下の箇所を記述
- ビルド・トリガ
- SCMをボーリング(毎時5分にチェック)
- ビルド(シェルの実行)
- Capistranoを呼び出すように記述
- (例)cap -f sample.rb deploy_
- ビルド後の処理
- Checkstyle警告の集計(出力ファイルを指定)
これで、ソースをコミットしたらJenkinsがCapistranoを呼び出して開発用サーバーを最新の状態にしてくれています。
ちなみに、今回は仮にCheckstyleで警告が出ていようがスルーさせています。
参考サイト
広告
関連記事
-
githubを使っての開発(2) -masterブランチにマージ-
前エントリーでgithub-flowをもとにした流れを書いたのですが、その中のマージについてもう少し
-
Facebookで名刺を作ってみた -Mooの名刺作成サービス-
1ヶ月~半月くらい前に話題になっていたMooの名刺作成サービス。 話題になっていた時期に注文した名
-
Jenkins + DeployGate(1) -DeployGateでAndroidアプリ開発-
TestFlight for Androidが発表されて1ヶ月ぐらいたちますが、音沙汰がありません。
-
私流のTracの使い方
プロジェクト管理システムであるTracを数年前から使っているのだけど、使い方が人によってまちまちだっ
-
PhoneGapを触ってみた(3) -画像を扱う(Camera APIを使ってみる)-
今回は、PhoneGapのCamera APIを使って携帯のアルバムにある画像を扱ってみます。
-
jQuery Mobileではまったこと -広告が表示されない!($.mobile.changePage()でのページ遷移)-
swipeした際にページ遷移をさせるためにjQueryMobileの$.mobile.changeP
-
iPhoneアプリ開発 芳名帳アプリ作成(4) -設定準備-
* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=
-
iPhoneアプリ開発 芳名帳アプリ作成(5) -ペンサイズと入力エリア数の設定-
* 今までの流れ - -[http://pplace.jp/2013/06/1531/:titl
-
iPhoneアプリ開発 -mixiSDKを使ってmixi連携をしてみる(2)-
* 前回 は、「ユーザーにAPI利用のための認可」をおこなってもらうところまでやりました。 本エン
-
iPhoneアプリ開発 -UIButtonのTouch Down、Touch up Inside、Touch up Outsideの使い方-
* Touch DownとTouch up Inside、Touch up Outsideの違い