9.2. Release procedure

9.2.1. 必要なもの

以下はリリース手順に必要なものです。

  • Debian GNU/Linux (sid)

  • zshをユーザーシェルとして使います

以下の作業ディレクトリを使います。

  • MROONGA_DIR=$HOME/work/mroonga

  • MROONGA_CLONE_DIR=$HOME/work/mroonga/mroonga.clean

  • MROONGA_GITHUB_COM_PATH=$HOME/work/mroonga/mroonga.github.com

  • CUTTER_DIR=$HOME/work/cutter

  • CUTTER_SOURCE_PATH=$HOME/work/cutter/cutter

  • GROONGA_SOURCE_PATH=$HOME/work/groonga/groonga.clean

  • PACKAGES_GROONGA_ORG_REPOSITORY=$HOME/work/groonga/packages.groonga.org

9.2.2. ビルド環境をセットアップする

以下のパッケージをインストールします:

% sudo apt-get install -V ruby mecab libmecab-dev gnupg2 dh-autoreconf python-sphinx bison
% pip3 install -U sphinx myst-parser linkify-it-py

9.2.3. 変更点を記述する

前回のリリース以降の最近の変更点を doc/source/news.rst へまとめます。このまとめはリリースノートでも使います。

以下のコマンドを前回のリリースからの変更点を収集するのに使います:

% git log -p --reverse $(git tag | tail -1)..

^commit でログを検索し、主な変更点を拾います。

含めるべきもの

  • ユーザーに影響のある変更点

  • 互換性を壊すような変更点

含めるべきでないもの

  • ユーザーに影響のない内部的な変更やリファクタリング

Execute the following command to create HTML for news.

% make update-files % make -C doc html

9.2.4. configureスクリプトの生成

masterブランチはconfigureスクリプトを含んでいないのでビルドするのにconfigureスクリプトを生成する必要があります。

autogen.sh を以下のコマンドで実行します:

% sh autogen.sh

configure スクリプトを生成します。

9.2.5. configureスクリプトの実行

Makefile を生成するために、 configure スクリプトを実行します。

リリース向けに以下のオプションとともに実行します。

% ./configure \
    --enable-document \
    --prefix=/tmp/local \
    --with-launchpad-uploader-pgp-key=(The key ID that is registered Launchpad) \
    --with-mroonga-github-com-path=$MROONGA_GITHUB_COM_PATH \
    --with-cutter-source-path=$CUTTER_SOURCE_PATH \
    --with-groonga-source-path=$GROONGA_SOURCE_PATH \
    --with-mysql-source=(The directory of MySQL source code) \
    --with-mysql-build=(The build directory of MySQL) \
    --with-mysql-config=(The path to mysql_config command)

--with-mysql-source の詳細については その他 を参照してください。

注釈

PPAのリポジトリは、同名のパッケージを上書いてアップロードできないので、不安定版のリポジトリでビルドできることを確認してから、安定版のリポジトリへアップロードするようにしてください。

9.2.6. パッケージをアップロード可能か確認する

pacakgesユーザーでpackages.groonga.orgにログインできるかを確認します。

ログインできるかどうかは以下のコマンドで確認できます。

% ssh packages@packages.groonga.org

packages.groonga.orgにログインできないときは、sshの公開鍵を登録しておかないといけません。

9.2.7. make update-latest-releaseを実行する

make update-latest-release を OLD_RELEASE_DATE や NEW_RELEASE_DATE とともに実行します。

9.09 のリリースの際は、以下のコマンドを実行しました。

% make update-latest-release OLD_RELEASE=9.09 OLD_RELEASE_DATE=2019-09-27 NEW_RELEASE_DATE=2019-10-30

このコマンドはMroongaのサイトのHTMLファイルやspecやdebian/changelogファイルのバージョンを更新します。

9.2.8. 各テストの結果確認

リリース用のタグを設定する前に、以下のテストが全てパスしているかを確認します。タグを設定してから問題が発覚すると、再度リリースすることになってしまうので、タグを設定する前に問題がないか確認します。

9.2.9. リリースのためのタグ打ち

タグを打つために以下のコマンドを実行します:

% make tag
% git push --tags origin

注釈

リリースのためにタグを打ったら、confiugre スクリプトを実行します。このタグの情報はドキュメントを生成するときに反映されます。

9.2.10. アーカイブファイルのアップロード

次に配布用のアーカイブファイル(tar.gz)を作成します:

% make dist

作業ディレクトリを packages/source に変更します。

% cd packages/source

make download を実行し、同期します。

% make download

ソースアーカイブを生成するために、 make archive を実行します:

% make archive

アーカイブファイルをアップロードするために、make upload を実行します:

% make upload

結果として、 tar.gz アーカイブ・ファイルが https://packages.groonga.org/source/mroonga/から入手可能になります。

9.2.11. リリース向けにパッケージを作成する

LinuxとWindowsのパッケージを作成します。

9.2.11.1. Debian

作業ディレクトリを packages に変更します。

% cd packages

以下のコマンドを実行します:

% rake apt

これで、パッケージのビルドと https://packages.groonga.org/ へのアップロードが完了しました。しかし、この段階ではビルドしたパッケージはまだ未署名なので、以下のコマンドでパッケージを署名します。

% cd $PACKAGES_GROONGA_ORG_REPOSITORY
% rake apt

9.2.11.2. Debian系(Ubuntu)

Ubuntuの場合、パッケージはlaunchpad.netのPPAで提供されます。

作業ディレクトリを packages にし、rake ubuntu:upload コマンドを実行します:

% cd packages
% rake ubuntu

パッケージのアップロードに成功すると、パッケージのビルドがlaunchpad.netにて行われます。アップロードに成功するとメールで通知が届きます。ビルドが成功するとパッケージをPPA経由でインストールできます。

https://launchpad.net/~groonga/+archive/ubuntu/ppa

9.2.11.3. Red Hat系

作業ディレクトリを packages に変更します。

% cd packages

以下のコマンドを実行します:

% rake yum

これで、パッケージのビルドと https://packages.groonga.org/ へのアップロードが完了しました。しかし、この段階ではビルドしたパッケージはまだ未署名なので、以下のコマンドでパッケージを署名します。

% cd $PACKAGES_GROONGA_ORG_REPOSITORY
% rake yum

9.2.11.4. Windows

Windows向けには、 GitHub release page の成果物を使っています。

9.2.12. Update Docker images

Docker Hub のMroongaのDockerイメージを更新します。

MroongaのDockerリポジトリー をクローンし、リポジトリーの中のDockerfileを更新します。

以下は、MySQLのバージョンが 5.7.26、 Mroongaのバージョンが 9.01、Groongaのバージョンが 9.0.2 の場合の例です。:

% mkdir -p ~/work/mroonga
% test -e ~/work/mroonga/docker.clean || git clone --recursive git@github.com:mroonga/docker.git ~/work/mroonga/docker.clean
% cd ~/work/mroonga/docker.clean
% git clean -xdf
% git checkout .
% git pull
% ./update.sh 5.7.26 9.01 9.0.2 #Automatically update Dockerfiles and commit changes and create a tag.
% git push

作業時には最新のバージョンを指定してください。

MroongaのDockerリポジトリーのGithub Actions が成功しているのを確認してから、タグをpushします。:

% git push --tags

タグをpushすると、MroongaのDockerリポジトリーのGithub ActionsがDocker HubのMroongaのDockerイメージを自動で更新します。

MySQL 5.x.x と 8.x.x の両方でこの手順を実行する必要があります。

9.2.13. ドキュメントをアップロード

  1. mroonga.github.comリポジトリをcloneする

  2. 以下のように make update-document$MROONGA_CLONE_DIR 配下で実行する

    % make update-document
    
  3. Mroonga.github.comの変更点をcommit&&pushする

9.2.14. Blog(Mroongaブログ)の更新

以下のファイルを更新します。

  • $MROONGA_GITHUB_COM_PATH/ja/_posts/(the date of release)-mroonga-(version).md

  • $MROONGA_GITHUB_COM_PATH/en/_posts/(the date of release)-mroonga-(version).md

Jekyllを使ってWebブラウザー上でブログの内容を確認します:

% jekyll serve

Webブラウザーで http://localhost:4000 にアクセスして内容を確認します。

注釈

ブログの内容を非公開にしたい場合は、 .md ファイル内の published:false に設定します。:

---
layout: post.en
title: Mroonga 10.01 has been released!
description: Mroonga 10.01 has been released!
published: false
---

9.2.15. リリースをメーリングリストで告知

リリースアナウンスをそれぞれのメーリングリストに送ります

9.2.16. リリースをTwitterで告知

Tweetリンクをクリックすると、最新のリリースについてツイートできます。タイトルやブログエントリのURLがツイートに含まれます。

ツイートは日本語と英語のブログエントリから行います。ツイートは groonga アカウントでログインした状態で行ってください。

9.2.17. リリースをFacebookで告知

FacebookのMroongaグループからリリースを告知します。

https://www.facebook.com/mroonga/

9.2.18. バージョンをあげる

最新のリリースへバージョンをあげる:

% make update-version NEW_VERSION_MAJOR=9 NEW_VERSION_MINOR=1 NEW_VERSION_MICRO=0