[CentOS6] Subversion+Capistrano でリリースを自動化してみる


Create: 2013/07/03
LastUpdate: 2013/07/04

ここでは、OSSを組み合わせて、下図のようなイメージでWEBアプリケーション(PHP)の「バージョン管理」と「リリース」を支援するサーバを構築してみます。

ソースコードの管理には、Subversion を使用します。リリースには、Capistano を使用し、Subversionのリポジトリからソースコードを取得して本番環境へを配布するようにします。また、リリース時は、phpcs を使用したPHPの構文チェックを行い、構文チェックがNGの場合は受け入れない(リリースしない)こととします。



Subversionのレポジトリは、以下のように使用することにします。

開発担当者が、trunk と branches を使用してソースコードを管理し、リリース版を tags に作成します。

運用担当者が、tags からソースコードを取り出して受け入れチェックがOKならリリースすることにします。

  • trunk ・・・ 開発中のコードを管理する。(メイン)
  • tags ・・・ リリースするコードを管理する。変更しない。
  • branches ・・・ リリースしたコードの保守

受け入れチェックでは、リリース条件の確認(他システムとの関連、リリース順序の保証など)や品質チェック(デグレの防止など)を行うことも考えられますが、複雑になるので、今回はPHPの構文チェックで代用します。

また、今回は、単純にWEBアプリケーション(PHP)とHTML、画像などの静的ファイルのリリースのみ考え、毎回、全部のファイルをリリースすることにします。DBのスキーマ変更やデータ変換などは考慮していません。

以下に上図の運用管理サーバ構築手順と使い方を紹介します。

  • 1.サーバ構築
    • 1.1.SunVersion+Apache のインストール
    • 1.2.Capistrano のインストール
    • 1.3.phpcs のインストール
  • 2.テスト環境設定
    • 2.1.テスト用のWEBアプリケーション作成
    • 2.2.Subversionでレポジトリの作成
    • 2.2.Capistranoでタスクの作成
  • 3.動作確認
    • 3.1.WEBアプリケーションのコミット
    • 3.2.WEBアプリケーションのリリース
    • 3.3.WEBアプリケーションのリリース番号チェック

今回は扱いませんが、以下のOSSを組み合わせるのも、おススメです。
Trac を利用してバグ管理とレポジトリ参照を行い、リリースなどの操作は、JobScheduler などを利用して自動化すると面白いかもしれません。バグ管理、レポジトリ参照、定時リリース(自動)、緊急リリース(手動)、切り戻し(手動)、などの操作を全てブラウザでできるようになると思います。
  • Git ・・・ バージョン管理ツール。上図の Subversion の代わりに利用できる。
  • Fabric ・・・ Python を使用したデプロイツール。 上図の Capistrano の代わりに利用できる。
  • Trac ・・・ Pythonを使用したバグ管理ツール。
  • Readmine ・・・ Ruby を使用したバグ管理ツール
  • JobScheduler ・・・ ジョブ管理ツール。リリース操作の自動化などに利用できる。
  • OTRS ・・・ 「ヘルプデスク管理機能」と「ITIL運用管理機能」を備えたツール。

■ 参考サイト