Jenkins使ってデプロイしてみた

今のところに転職してまずデプロイを手動で行なっていることに驚いた。

環境はこんな感じ。

  • 使用言語はjava
  • scmはsubversion
  • インフラ環境はAWS
  • サービスはSass型のECサービス。

手順として概要はこんな感じ。

  • デプロイ担当の人のノートPCでEclipseでビルドする。
  • ビルドしたclassとかjsp等を拡張子指定してexportする。
  • exportしたものをbatでごにょごにょする。
  • ごにょごにょしたものをzipで圧縮する。
  • zipファイルをインスタンスにscpする。
  • ELBを手動で切り離す。
  • zipファイルを展開してtomcat再起動する。
  • ELBを手動で戻す。

当然かなりのオペミスが発生していて問題になっていた。
そこでJenkinsを使ってデプロイの仕組みを作ってみた。

javaの経験がまるでないのでよくわからないけど、
javaではwarファイルにまとめてデプロイするのが普通ぽい。

ただサービスの特性もあって現状の構成ではwarファイルにしての
デプロイが厳しいと感じたので手慣れているrpmにしてしまった。

簡単にJenkinsを導入する手順を自分用にまとめておく。

  • CI専用インスタンスを作成してJenkinsインストール。
  • Jenkinsでsvn upしてビルドするジョブを作成する。
  • rpmを作成するためのspecファイルをCIインスタンスで作成する。
  • Jenkinsでビルドしたclass等をspecファイルでrpmbuildするジョブを作成する。
  • CIインスタンスapacheを入れてデプロイに使うyumレポジトリを作成する。
  • 作成したレポジトリを参照するrepoファイルをデプロイしたいサーバに配置する。
  • CIインスタンスCapistranoをインストールする。
  • Capistranoでデプロイ用のタスクを作成する。
  • JenkinsでCapistranoを実行させるデプロイするジョブを作成する。

これだけなんだけど、本番環境で実稼動させるまでには結構時間かかった。

プロジェクト開始と同時にCIサーバ導入してゼロデプロイできるように
しないと運用入ってからCIサーバ入れるのは大変でした。

必ずプロジェクト開始と同時にCIサーバ入れる事をオススメします。
継続的デリバリなかなか読み終われない。。。

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化