[CentOS6] Subversion+Capistrano でリリースを自動化してみる ~ 3.動作確認


Create: 2013/07/03
LastUpdate: 2013/07/04
≪ メニューに戻る

3.動作確認


ここでは、WEBアプリケーションのコミットからリリースまでの一連の流れを実施してみます。

3.1.WEBアプリケーションのコミット


テスト済みのWEBアプリケーションを Subversion のレポジトリにコミットして、リリース用にタグをつけます。
ここでは、「 2.テスト環境設定」で作成したテスト用のWEBアプリケーションを使用し、運用管理サーバに root ユーザでログインして、以下のように svn コマンドを実行します。
リリース番号は、"rel-1.0.0" としてタグをつけます。
# svn copy file:///home/svn/project1/trunc file:///home/svn/project1/tags/rel-1.0.0 -m 'release 1.0.0'
ブラウザで以下のURLにアクセスして、tags ディレクトリを確認してみます。
  • http://<IPアドレス>/repos/project1/tags/ 
下図のように表示されればOKです。



3.2.Webアプリケーションのリリース


リリース番号が"rel-1.0.0" のWEBアプリケーションをsvn のレポジトリから取り出し、受け入れチェックがOKなら、WEBサーバに配布します。
以下のように Capistrano の u_deploy タスクを実行します。
# cap -s svn_tag=rel-1.0.0 -f /root/workspace/project1.cap u_deploy
  * 2013-07-04 10:20:11 executing `u_deploy'
  * 2013-07-04 10:20:11 executing `u_checkout'
  * executing "rm -rf /home/unyo/workspace/project1"
    servers: ["localhost"]
    [localhost] executing command
    command finished in 18ms
  * executing "svn export file:///home/svn/project1/tags/rel-1.0.0 /home/unyo/workspace/project1"
    servers: ["localhost"]
    [localhost] executing command
 ** [out :: localhost] A    /home/unyo/workspace/project1
 ** [out :: localhost] A    /home/unyo/workspace/project1/phpinfo.php
 ** [out :: localhost] A    /home/unyo/workspace/project1/trunc
 ** [out :: localhost] A    /home/unyo/workspace/project1/trunc/sample.php
 ** [out :: localhost] A    /home/unyo/workspace/project1/trunc/phpinfo.php
 ** [out :: localhost] リビジョン 4 をエクスポートしました。
    command finished in 29ms
  * executing "echo 'rel-1.0.0' > /home/unyo/workspace/project1/Release"
    servers: ["localhost"]
    [localhost] executing command
    command finished in 15ms
  * 2013-07-04 10:20:12 executing `u_phpcs'
  * executing "phpcs --standard=PHPCS /home/unyo/workspace/project1/*.php"
    servers: ["localhost"]
    [localhost] executing command
 ** [out :: localhost] Time: 0 seconds, Memory: 7.00Mb
 ** [out :: localhost]
    command finished in 93ms
  * 2013-07-04 10:20:12 executing `u_upload'
  * executing multiple commands in parallel
    -> "else" :: "mkdir -p /var/www/bk"
    -> "else" :: "mkdir -p /var/www/bk"
    servers: ["192.168.1.61", "192.168.1.66"]
    [192.168.1.61] executing command
    [192.168.1.66] executing command
    command finished in 23ms
  * executing multiple commands in parallel
    -> "else" :: "rm -f /var/www/bk/project1.tgz"
    -> "else" :: "rm -f /var/www/bk/project1.tgz"
    servers: ["192.168.1.61", "192.168.1.66"]
    [192.168.1.66] executing command
    [192.168.1.61] executing command
    command finished in 54ms
  * executing multiple commands in parallel
    -> "else" :: "if [ -d /var/www/project1 ] ; then tar cvfzP /var/www/bk/project1.tgz /var/www/project1 ; fi"
    -> "else" :: "if [ -d /var/www/project1 ] ; then tar cvfzP /var/www/bk/project1.tgz /var/www/project1 ; fi"
    servers: ["192.168.1.61", "192.168.1.66"]
    [192.168.1.61] executing command
    [192.168.1.66] executing command
 ** [out :: 192.168.1.61] /var/www/project1/
 ** [out :: 192.168.1.61] /var/www/project1/phpinfo.php
 ** [out :: 192.168.1.66] /var/www/project1/
 ** [out :: 192.168.1.66] /var/www/project1/phpinfo.php
    command finished in 25ms
  * executing multiple commands in parallel
    -> "else" :: "rm -rf /var/www/project1"
    -> "else" :: "rm -rf /var/www/project1"
    servers: ["192.168.1.61", "192.168.1.66"]
    [192.168.1.66] executing command
    [192.168.1.61] executing command
    command finished in 52ms
    servers: ["192.168.1.61", "192.168.1.66"]
 ** scp upload /home/unyo/workspace/project1 -> /var/www/project1
    [192.168.1.61] /home/unyo/workspace/project1/trunc/sample.php
    [192.168.1.66] /home/unyo/workspace/project1/trunc/sample.php
    [192.168.1.61] /home/unyo/workspace/project1/trunc/phpinfo.php
    [192.168.1.66] /home/unyo/workspace/project1/trunc/phpinfo.php
    [192.168.1.61] /home/unyo/workspace/project1/phpinfo.php
    [192.168.1.66] /home/unyo/workspace/project1/phpinfo.php
    [192.168.1.61] /home/unyo/workspace/project1/Release
    [192.168.1.66] /home/unyo/workspace/project1/Release
  * scp upload complete
  * executing multiple commands in parallel
    -> "else" :: "chown -R apache:apache /var/www/project1"
    -> "else" :: "chown -R apache:apache /var/www/project1"
    servers: ["192.168.1.61", "192.168.1.66"]
    [192.168.1.61] executing command
    [192.168.1.66] executing command
    command finished in 48ms
※この実行例では、初回リリースなのでバックアップを作成していません。

3.3.Webアプリケーションのリリース番号チェック


WEBサーバー上のWEBアプリケーションのリリース番号を確認してみます。
以下のように Capistrano の u_relcheck タスクを実行します。
# cap -f /root/workspace/project1.cap u_relcheck
  * 2013-07-04 10:24:54 executing `u_relcheck'
  * executing multiple commands in parallel
    -> "else" :: "cat /var/www/project1/Release"
    -> "else" :: "cat /var/www/project1/Release"
    servers: ["192.168.1.61", "192.168.1.66"]
    [192.168.1.61] executing command
    [192.168.1.66] executing command
 ** [out :: 192.168.1.61] rel-1.0.0
 ** [out :: 192.168.1.66] rel-1.0.0
    command finished in 24ms
赤字部分で、各WEBサーバのリリース番号が確認できます。
今回の場合は、"rel-1.0.0" と表示されたらリリースは成功です。
あとは、ブラウザで動作確認して、ちゃんと動けばOKです。
なお、リリースに問題があって、リリース前の状態に戻したい場合は、戻したいリリース番号を指定して u_deploy を実行するか、u_restore を実行してバックアップを戻します。