Preamble: This document covers steps for releasing new versions of Search Index Rebuilder which is performed by maintainers only. It includes discussion about private servers, repositories and tools which other contributors don’t have access to. It is made public for transparency and to allow for improvement suggestions.
- Prerequisites
- Interdependencies
- Update SQL trigger files
- Prepare Jira tickets
- Prepare GitHub release notes
- Add Git tag
- Build Docker image
- Deploy to production
- Push Git tag
- Publish GitHub release notes
- Update Jira tickets
- Docker
- Git
Both repositories mb-solr
and mbsssss
may have to be updated at the same time.
Make sure to keep those working with SIR in any case.
The repository musicbrainz-docker
can be used to test everything together locally.
The website test.mb.o
can be used to get community feedback as well if needed.
Assuming that you followed development setup for
local development of Search Index Rebuilder,
run the following commands in the indexer
service:
python -m sir triggers -bid 2
./GenerateDropSql.pl
- Make sure that
sir-next
is an unreleased version of “Indexer” component in SEARCH component versions; Otherwise add it with “next release” as description. - Make sure that noticeable changes are covered by appropriate tickets in the “Indexer” component of the “SEARCH” project marked as “In Development Branch”; Otherwise create/split/update tickets as needed.
- Set their Fix Version field to
sir-next
.
- Draft a new release at https://github.com/metabrainz/sir/releases;
- Set semantic version number
M.m.p
for release title. A new major versionM
is required when SIR cannot be updated independently of other search components (See below); - Copy the formatted list of resolved tickets from unreleased SEARCH versions (by clicking on
sir-next
, then on “Release Notes“) to the description; - Add an introductive section “New Requirements” i,
especially if a new version is required for any of the following:
- MusicBrainz database schema (
musicbrainz-server
schema-change code and MBDB schema documentation), - MusicBrainz XML metadata schema (
mmd-schema
releases), - its associated Python bindings (
mb-rngpy
tags), - MusicBrainz Solr search schema (
mbsssss
releases), - and its associated MusicBrainz Solr query response writer (
mb-solr
releases);
- MusicBrainz database schema (
- Add update instructions if needed (to reinstall triggers or rebuild any search index);
- Add task list items to cover other (supposedly unnoticeable) changes.
For version M.m.p
:
git status
# Please verify that the clone is on branch master without any local change
git pull --ff-only
git tag 'vM.m.p' -m 'One-line summary'
docker/push.sh
Please verify that a new image tag (M.m.p-git2consul
) is available from
from https://hub.docker.com/r/metabrainz/sir/tags.
Point deployment configuration to the new image and follow update instructions if any.
git push origin 'vM.m.d'
Choose the above pushed tag for the above drafted release and publish it.
- Edit
sir-next
from SEARCH component versions (in “Indexer” component) as follows:- Change name to
sir-
M.m.p - Set release date
- Replace description with the GitHub release URL;
- Change name to
- Close tickets for this version from SEARCH releases;
- Mark it as released;
- Archive the previous
sir-
* version.