リリース手順

news.textileに変更点のまとめ

前回のリリース時から現在までの変更点をnews.textileにまとめるため、下記コマンドを実行してgitのコミットログを表示する。

$ git log -p --reverse (前回のリリースバージョン)..

ログを"Author:"で検索しながら、ユーザにとって知る必要があるもののコミットログのみを抜き出す。

ユーザにとって必要な情報とは、仕様の変更や新しい機能の追加など、ユーザーがリリースするライブラリを使う上で影響ある情報である。 逆に、リファクタリング、テストの変更、変数名の変更など、ユーザーが直接意識しない部分については書く必要はない。

次に、抜き出したコミットログを1つずつ見て、その先頭にカテゴリ名がある場合は、":“を削除してカテゴリ名を”[“と”]"で囲む。 カテゴリ名を除いたログの先頭にある単語を過去形にし、頭文字を大文字にする。 その後、ログを次のように分類する。

  • Improvements: 機能などを新しく追加したコミットのログ
  • Changes: 動作の変更など、今まであったものを変更したログ
  • Fixes: バグの修正など前バージョンまでにあった問題を修正したログ

また、コミットログの行末に[人名]がある場合は、Thanksという分類を作って、その人名をThanks以下に書く。 さらにREADMEにあるThanks以下にも名前を追加する。

この作業をリリース予定日よりも前に行った場合は、目に見えるところにコミットIDをメモしておく。 ただし、news.textileだと次のrake reference:po:updateで翻訳対象になってしまいノイズになってしまうので注意すること。

news.textileの1リリース分のテンプレート


h2. (リリースするバージョン): リリース日(yyyy-mm-dd)

h3. 改良

* 

h3. 変更

* 

h3. 修正

* 

h3. 感謝

* 

日本語訳の作成

下記コマンドを実行してja.poを更新する。

$ rake reference:po:update

その後、ja.poを開いて、各msgid(翻訳対象となる文章)に対応するmsgstrに対応する和訳を作成する。 fuzzyを検索して見つかったら訳を確認し必要なら修正を行う。その後fuzzyを消す。

リファレンスの確認

下記コマンドを実行して、リファレンスの翻訳を行う。

$ rake reference:translate

doc/reference/ja/file.news.htmlなどのja.poを編集した箇所が正しく翻訳されているか確認する。

バージョンとリリース日の更新

ranguba.orgのindexページ(index.html、ja/index.html)の最新バージョンとリリース日をそれぞれ今回のリリースに合わせたものに更新する。

まず、任意の位置で次のコマンドを実行して、ranguba.orgのリポジトリをcloneする。

$ git clone git@github.com:ranguba/ranguba.org.git

そして、リリースするライブラリのRakefileに次を追加する。

Packnga::ReleaseTask.new(spec) do |task|
  task.index_html_dir = "/path/to/ranguba.org"
end

その後、次のコマンドを実行して最新バージョンとリリース日を更新する。

$ rake release:info:update OLD_VERSION=(前回リリース時のバージョン) OLD_RELEASE_DATE=(前回リリース日) RELEASE_DATE=(今回のリリース日)

.gemspecの確認

(パッケージ名).gemspecの中身が問題ないか確認する。特に初めてリリースするときは注意すること。

  • .yardoptsをspec.filesに指定しているか(rubydoc.infoでドキュメントを閲覧するときに必要)
  • spec.files+=のつもりでspec.files=になっていないか
  • その他、spec.files=へ指定するファイルは過不足ないか・間違っていないか(diredなどでファイル一覧を見ながら作業する)
  • 依存関係(add_runtime/developement_dependency)は間違っていないか

gemパッケージの作成

下記コマンドを打ってアップロード用のgemパッケージをビルドする。

$ make clean  # rroongaのみ必要
$ rake build

gemパッケージの動作確認

そのgemパッケージの動作を確認するため、下記コマンドを打ってローカル環境にインストールする。

$ gem1.9.1 install pkg/(パッケージ名)-(今回リリースバージョン番号).gem --user-install

インストールが成功すると/home/(ユーザ名)/.gem/ruby/1.9.1/gems/(パッケージ名)-(今回リリースバージョン番号)/にインストールされる。 このディレクトリに移動して、テストを実行し動作を確認する。

$ NO_MAKE=yes ruby1.9.1 test/run-test.rb

news.textileの最終的なまとめとリファレンス作成

前回のリリース時から現在までの変更点をnews.textileにまとめるため、下記コマンドを実行してgitのコミットログを表示する。

$ git log -p --reverse (前回のリリースバージョン)..

ログを"Author:"で検索しながら、ユーザにとって知る必要があるもののコミットログのみを抜き出す。

ユーザにとって必要な情報とは、仕様の変更や新しい機能の追加など、ユーザーがリリースするライブラリを使う上で影響ある情報である。 逆に、リファクタリング、テストの変更、変数名の変更など、ユーザーが直接意識しない部分については書く必要はない。

次に、抜き出したコミットログを1つずつ見て、その先頭にカテゴリ名がある場合は、":“を削除してカテゴリ名を”[“と”]"で囲む。 カテゴリ名を除いたログの先頭にある単語を過去形にし、頭文字を大文字にする。 その後、ログを次のように分類する。

  • Improvements: 機能などを新しく追加したコミットのログ
  • Changes: 動作の変更など、今まであったものを変更したログ
  • Fixes: バグの修正など前バージョンまでにあった問題を修正したログ

また、コミットログの行末に[人名]がある場合は、Thanksという分類を作って、その人名をThanks以下に書く。 さらにREADMEにあるThanks以下にも名前を追加する。

下記コマンドを実行してja.poを更新する。

$ rake reference:po:update

その後、ja.poを開いて、各msgid(翻訳対象となる文章)に対応するmsgstrに対応する和訳を作成する。 fuzzyを検索して見つかったら訳を確認し必要なら修正を行う。その後fuzzyを消す。

さらに下記コマンドを実行して、リファレンスの翻訳を行う。

$ rake reference:translate

doc/reference/ja/file.news.htmlなどのja.poを編集した箇所が正しく翻訳されているか確認する。

これまでの変更をpush

ここまでに行った変更をcommitしてpushする。

リリースバージョンのタグの作成とrubygems.orgへのパッケージのアップロード

下記コマンドを実行してリリースバージョンのタグを作成し、パッケージをrubygems.orgへアップロードする。

$ rake release

リファレンスをranguba.orgにアップロード

次のコマンドを実行して、リファレンスをranguba.orgのリポジトリ内にコピーする。

$ rake reference:publication:generate
$ rake release:references:upload

その後、 次のコマンドを実行してranguba.orgのリポジトリをcloneしたディレクトリに移動する。

$ cd /path/to/ranguba.org

そして、コピーにより生じた変更をranguba.orgのリポジトリにpushする。 ranguba.orgはGithub Pagesを使っているので、pushすると自動的にranguba.orgのサイトも更新される。

メーリングリストにリリースの周知

メーリングリストにリリースした旨を書いたメールを流す。 日本語の他、英語のメーリングリストにもリリースした旨を英語で書いたメールを流す。

日本語でのメールの具体例


吉原です。

(最新バージョンをリリースしたことを書く)
groongaのRubyバインディングrroonga1.2.3をリリースしました。
(rroongaのインデックスページのURL)
  http://groonga.rubyforge.org/index.html.ja#about-rroonga

(ソフトウェアの概略)
rroongaはRubyらしい書き方でgroongaを操作できることを重視しています。
同時に、groongaの速度をそのまま生かすことも大事にしています。

(前回リリースから今回リリースまでに変更された点のうち、ユーザにとって重要なものを書く)
1.2.1からの変更された点としては、ドキュメントの一部英訳化、リファ
レンスのパスの修正などを行いました。また、rroongaをインストールし
ようとした際、groongaがないと自動でインストールする機能が復活しま
した。

(コマンドなどのインストール方法)
インストール:
  % sudo gem install rroonga

(チュートリアルページのURL)
irbを使ったrroongaのチュートリアルはこちらにあります。

  http://groonga.rubyforge.org/rroonga/ja/file.tutorial.html

(http://groonga.rubyforge.org/rroonga/ja/file.news.htmlを見て、前回リリース時からの変更点を書く)
1.2.1からの変更点は以下の通りです。

1.2.3: 2011-06-27

修正
    gemパッケージに含まれてしまったオブジェクトファイル(*.o)を削除。
    一部のリファレンスマニュアルの文字化けを修正。

1.2.2: 2011-06-27

改良
    英語版の「開発者向け情報」ページを作成。
    "html:publish"タスクと"publish"に関しての説明を追加。

変更
    Groonga::Record#attributesが重複したレコードが現れた際に
    同じattributesオブジェクトを返すようにした。
    Groonga::Record#attributesにドキュメントを追加。
    「開発者向け情報」ページ内にあるドキュメント作成ツールを変更。
    NEWS*.rdocとtutorial.texttileをディレクトリdoc/text/に移動。

修正
    インデックスページにある「チュートリアル」ページへのリンクを修正。
    インデックスページにある英語版「チュートリアル」ページへのリンクを修正。
    新しいgroongaのダウンロードURLに対応。 [mallowlabs]

感謝
    mallowlabsさん

英語でのメールの具体例


Everyone,

(rroongaの最新バージョンをリリースしたことを書く)
We released rroonga 1.2.3.

(インデックスページのURLを書く)
  http://groonga.rubyforge.org/#about-rroonga

(rroongaの説明)
rroonga is the library which ruby-binding for grronga.

(前回リリース時からの変更点のうち、ユーザにとって大事なものを書く)
Since ver.1.2.1 was released, we translated some documents
from Japanese to English, and fixed pathes in reference-manual.
Thanks to mallowlabs, when installing rroonga without groonga
installed, grronga is automatically installed.

(インストール方法を書く)
How to install:
  % sudo gem install rroonga

(チュートリアルについてのURLなどを書く)
There is the tutorial of rroonga with irb:

  http://groonga.rubyforge.org/rroonga/en/file.tutorial.html

(news.textileから今回リリースのために書いた部分をコピーする)
Please see below changes since ver.1.2.1.

== 1.2.3: 2011-06-27

=== Fixes

* remove object files in gem packages.
* fix charactor corruption in reference.

== 1.2.2: 2011-06-27

=== Improvements

* created "Developers" page in English.
* added description for tasks of "html:publish" and "publish".

=== Changes

* Groonga::Record#attributes return same attributes object for duplicate records.
* added document for Groonga::Record#attributes.
* changed tool name in document page for creating document.
* moved NEWS*.rdoc and tutorial.texttile to doc/text/.

=== Fixes

* fixed the tutorial path in index page.
* fixed the path of tutorial in index page in English.
* follow the groonga downlowd URL change. [mallowlabs]

=== Thanks

* mallowlabs

--
(名前とメールアドレス)
yoshihara
(yoshihara at clear-code.com)

次回リリース時のバージョン番号の設定

rroongaはext/groonga/rb-grn.h、それ以外はlib/(パッケージ名)/version.rbにある、RB_GRN_MAJOR_VERSION,RB_GRN_MINOR_VERSION,RB_GRN_MICRO_VERSIONの値を次回リリース時のバージョンの値に変更し、コミットする。