[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.xmlのCubbyのバージョン番号からSNAPSHOTを外す必要があります。何カ所で使われているか確認してみます。
find . **/*.xml | xargs grep 0.9.2-SNAPSHOT
コマンドから一括置換する方法がわからなかったので、昨日はエディタでひとつづつ「
次にビルドです。CubbyはMaven2を使っているのでビルドは以下のコマンドで、テストとMaven2リポジトリへのデプロイが実行されます。Maven2ではテストが通らなかった場合、ビルドが中止されるので安全装置代わりに使えます。
cd cubby
mvn clean package install
これでJARファイルとプロジェクトサイト、配賦用のZIPファイルがtarget配下に作成されます。installを実行するのは次のwarファイル作成用にローカルリポジトリに最新のCubbyのJARファイルを配置するためです。
次にサンプルのwarファイルを作成します。
cd ../cubby-examples
mvn clean package
これでwarがtarget配下に作成されます。
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のサイトも更新する必要がありますが、ここでは説明を割愛しています。