[cubby][subversion][maven2]SVN & Maven2時代のリリース手順

昨日Cubbyのリリース作業をやったので、備忘録の意味も込めて手順を晒してみます。間違いやもっといい方法あればつっこみ歓迎です。

まず、trunkからリリース作業をおこなうためのリリースブランチを作成します。ブランチのコピー中に他のコミッタがコミットすると問題あるので手始めにtrunkのリビジョンを確認しておきます。

svn info https://www.seasar.org/svn/sandbox/cubby/trunk
最終更新リビジョン: 100

次にtrunkをリリースブランチにコピーします。

svn cp https://www.seasar.org/svn/sandbox/cubby/trunk https://www.seasar.org/svn/sandbox/cubby/branches/0.9.1.x -m 'release branche 0.9.1.x'

再度、trunkのリビジョンを確認して、コミットが行われていないことを確認します。

svn info https://www.seasar.org/svn/sandbox/cubby/trunk
最終更新リビジョン: 100

リリース用のブランチを「0.9.1.x」にしているのは、バグフィックス版などをリリースするときに「0.9.1.x」に対して作業なりパッチをあてて、バージョン「0.9.1.1」なども、同じリリースブランチで作業を行うためです。「0.9.1.x」系列のリリースブランチっていう意味になります。

次に、リリースブランチをチェックアウトします。このリリースブランチに対してリリースの作業を進めていきます。リリースブランチを使うとtrunkには影響を与えないので、他の開発者も継続して作業することができます。

mkdir work
cd work
svn co https://www.seasar.org/svn/sandbox/cubby/branches/0.9.1.x/cubby
svn co https://www.seasar.org/svn/sandbox/cubby/branches/0.9.1.x/cubby-examples

まずは、リリース用にMaven2の設定を変更します。主にpom.xml、site.xmlCubbyのバージョン番号からSNAPSHOTを外す必要があります。何カ所で使われているか確認してみます。

find . **/*.xml | xargs grep 0.9.2-SNAPSHOT

コマンドから一括置換する方法がわからなかったので、昨日はエディタでひとつづつ「0.9.2-SNAPHOST」を「0.9.2」に変更していきました。これいい方法ないすか?

次にビルドです。CubbyMaven2を使っているのでビルドは以下のコマンドで、テストとMaven2リポジトリへのデプロイが実行されます。Maven2ではテストが通らなかった場合、ビルドが中止されるので安全装置代わりに使えます。

cd cubby
mvn clean package install

これでJARファイルとプロジェクトサイト、配賦用のZIPファイルがtarget配下に作成されます。installを実行するのは次のwarファイル作成用にローカルリポジトリに最新のCubbyのJARファイルを配置するためです。

次にサンプルのwarファイルを作成します。

cd ../cubby-examples
mvn clean package

これでwarがtarget配下に作成されます。

最後にMaven2リポジトリにJARを上げます。

cd ../cubby
mvn source:jar javadoc:jar deploy -DupdateReleaseInfo=true

今までの作業結果をSVNのリリースブランチにコミットします。もし、ここでバグ修正などした場合は、該当箇所をtrunkにマージします(今回はありませんでした)。

svn ci -m '0.9.1 release'

リリースブランチからタグへコピーしてリリース作業完了です。

svn cp https://www.seasar.org/svn/sandbox/cubby/branches/0.9.1.x https://www.seasar.org/svn/sandbox/cubby/tags/0.9.1 -m 'release branche 0.9.1.x'

リリースブランチとかMaven2の連携部分については手前味噌になりますが「構成管理 実践入門」に詳しく書いてありますので、合わせてご覧下さい。Maven Release Pluginなどを使用するともっと簡単にpomの書き換えなどできるみたいよ。

注意:wwwというCubbyのサイトも更新する必要がありますが、ここでは説明を割愛しています。

[cubby][maven2]Maven2のArchetypeを使ってCubbyを1分で動かす

Archetypeっていうのは、プロジェクトのひな形を作成できる機能です。以下のコマンドで、pom.xmlの依存やHotDeployのdicon設定が済んだプロジェクトのひな形が作成されます。

mvn archetype:create \
-DgroupId=hello \
-DartifactId=world \
-Dversion=1.0.0 \
-DarchetypeGroupId=org.seasar.cubby \
-DarchetypeArtifactId=cubby-archetype \
-DarchetypeVersion=0.9.1 \
-DremoteRepositories=http://maven.seasar.org/maven2/
(実際には1行で入力してください)

Tomcatがインストールされていなくても、以下のコマンドで動作確認することができます。

cd world
mvn tomcat:run

ブラウザで「http://localhost:8080/world/」にアクセスするとサンプルのアクションクラスを実行できます。

Cubbyではmvnコマンドからscaffoldやエンティティ、Daoをさくっと作れる方向性を目指しています。DBFluteMaven2対応とかになるのかも。