9.2. Release procedure

9.2.1. Requirements

Here is the requirements about release procedure.

  • Debian GNU/Linux (sid)

  • Use zsh as user shell

Use the following working directories.

  • 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. Setup build environment

Install the following packages:

% 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. Describe the changes

Summarize recent changes since the previous release into doc/source/news.txt. This summary is also used in release note.

Execute the following command to collect change logs since the previous version:

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

Search the logs by ^commit, and pick up collect remarkable changes.

Should be included

  • The changes which affect to users

  • The changes which broke compatibility

Shoud not be included

  • The changes which doesn’t affect to users (Internal source code changes or refactoring)

Execute the following command to create HTML for news.

% make update-files % make -C doc html

9.2.4. Generate configure script

Because of master branch doesn’t include configure script, then it is required to generate configure script for building.

Execute autogen.sh with the following command:

% sh autogen.sh

It generates configure script.

9.2.5. Execute configure script

For generating Makefile, execute the configure script.

Execute with the following options for the release:

% ./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)

See Others for the details of --with-mysql-source option.

Note

We can not upload and override the same name packages to PPA repository. Therefore, we upload packages to a stable repository after confirming the successful build of they in the nightly repository.

9.2.6. Check whether you can upload packages

Check whether you can login to packages.groonga.org as packages user.

You can check with the following command whether you can login:

% ssh packages@packages.groonga.org

If you can’t login to packages.groonga.org, you must be registered ssh public key.

9.2.7. Execute make update-latest-release

Execute make update-latest-release command with OLD_RELEASE_DATE, NEW_RELEASE_DATE.

When 9.09 release, we executed the following command:

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

This command updates some html files (which is used for web sites of Mroonga - index.html,ja/index.html) and the version of spec file or debian/changelog entry.

9.2.8. Confirm the results of each test

We confirm the results of all the below tests before setting the tag to Mroonga. Because if we will find problems in Mroonga after setting the tag to it, we must release it again.

9.2.9. Tagging for release

Execute the following command for tagging:

% make tag
% git push --tags origin

Note

After tagging for the release, execute configure script. This tag information is reflected when generating the documents.

9.2.10. Upload archive files

Then, create archive file (tar.gz) for distribution:

% make dist

Change working directory to packages/source:

% cd packages/source

Execute make download for syncing with the upstream:

% make download

Execute make archive for generating source archive:

% make archive

Execute make upload for uploading archive file:

% make upload

As a result, tar.gz archive file is available from https://packages.groonga.org/source/mroonga/.

9.2.11. Create packages for the release

Create Linux and Windows packages.

9.2.11.1. Debian

Change working directory to packages:

% cd packages

Execute the following command:

% rake apt

Now we finish build and upload packages to https://packages.groonga.org/. However, these packages are unsigned. We sign packages by executing the below commands:

% cd $PACKAGES_GROONGA_ORG_REPOSITORY
% rake apt

9.2.11.2. Debian derivatives(Ubuntu)

For Ubuntu, packages are provided by PPA on launchpad.net.

Change working directory to packages and execute rake ubuntu:upload command:

% cd packages
% rake ubuntu

When upload packages was succeeded, package build process is executed on launchpad.net. Then build result is notified via E-mail. You can install packages via Groonga PPA on launchpad.net:

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

9.2.11.3. Red Hat derivatives

Change working directory to packages

% cd packages

Execute the following command:

% rake yum

Now we finish build and upload packages to https://packages.groonga.org/. However, these packages are unsigned. We sign packages by executing the below commands:

% cd $PACKAGES_GROONGA_ORG_REPOSITORY
% rake yum

9.2.11.4. Windows

For windows packages, we use artifacts of GitHub release page .

9.2.12. Update Docker images

We update Mroonga’s Docker images of Docker Hub .

Clone the Mroonga’s Docker repository and update Dockerfiles in tha repository.

Here is an example for the case that the MySQL version is 5.7.26, the Mroonga version is 9.01, the Groonga version is 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

You have to specify the latest versions.

After you check GitHub Actions of the Mroonga’s Docker repository are succeeded, push tag to remote, push tag to remote.:

% git push --tags

GitHub Actions of the Mroonga’s Docker repository automatically update the Mroonga’s docker images of Docker Hub after you push the tag.

You have to execute this procedure for both MySQL 5.x.x and 8.x.x.

9.2.13. Upload documents

  1. Clone mroonga.github.com repository

  2. Execute make update-document as below in $MROONGA_CLONE_DIR:

    % make update-document
    
  3. Commit changes in mroonga.github.com repository && push them

9.2.14. Update blog(Mroonga blog)

We update the below files.

  • $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

We can confirm contents of blog on Web browser by using Jekyll.:

% jekyll serve

We access http://localhost:4000 on our web browser for confirming contents.

Note

If we want private to blog contents, we set false on published: in .md file.:

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

9.2.15. Announce release for mailing list

Send release announce for each mailing list

9.2.16. Announce release for twitter

Click Tweet link in Mrooga blog entry. You can share tweet about latest release. If you use tweet link, title of release announce and URL is embedded into your tweet.

Execute sharing tweet in Japanese and English version of blog entry. Note that this tweet should be done when logged in by groonga account.

9.2.17. Announce release for Facebook

We announce release from Mroonga group in Facebook.

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

9.2.18. Bump version

Bump version to the latest release:

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