Note
|
This document is meant primarily for Gerrit maintainers who have been given approval and submit status to the Gerrit projects. Additionally, maintainers should be given owner status to the Gerrit web site. |
To make a Gerrit release involves a great deal of complex tasks and it is easy to miss a step so this document should hopefuly serve as both a how to for those new to the process and as a checklist for those already familiar with these tasks.
Gerrit Release Type
Here are some guidelines on release approaches depending on the type of release you want to make (stable-fix, stable, RC0, RC1…).
Stable
A stable release is generally built from the master branch and may need to undergo some stabilization before releasing the final release.
-
Propose the release with any plans/objectives to the mailing list
-
Create a Gerrit RC0
-
If needed create a Gerrit RC1
Note
|
You may let in a few features to this release |
-
If needed create a Gerrit RC2
Note
|
There should be no new features in this release, only bug fixes |
-
Finally create the stable release (no RC)
Stable-Fix
Stable-fix releases should likely only contain bug fixes and doc updates.
-
Propose the release with any plans/objectives to the mailing list
-
This type of release does not need any RCs, release when the objectives are met
Create the Actual Release
In the example commands below we assume that the last release was 2.4 and that we are preparing 2.5 release.
Prepare the Subprojects
-
Publish the latest snapshot for all subprojects
-
Freeze all subprojects and publish them!
Prepare Gerrit
-
Create a stable-2.5 branch for making the new release
-
In the master branch: Update the poms for the Gerrit version, push for review, get merged
tools/version.sh --snapshot=2.5
-
Checkout the stable-2.5 branch
-
Update the top level pom.xml in Gerrit to ensure that none of the Subprojects point to snapshot releases
-
Tag
git tag -a -m "gerrit 2.5-rc0" v2.5-rc0 git tag -a -m "gerrit 2.5" v2.5
-
Build (without plugins)
./tools/release.sh
Publish the Plugin API JAR File
-
Push JAR to commondatastorage.googleapis.com
-
Run tools/deploy_api.sh
-
Prepare the Core Plugins
-
Release and publish the core plugins
Package Gerrit with Plugins
-
Ensure that the core plugins listed in gerrit-package-plugins/pom.xml point to the latest release version (no dependency to snapshot versions)
-
Include core plugins into WAR
$ ./tools/version.sh --release && mvn clean package -f gerrit-package-plugins/pom.xml $ ./tools/version.sh --reset
-
Find WAR that includes the core plugins at gerrit-package-plugins\target\gerrit-full-v2.5.war
-
Sanity check WAR
Publish to the Project Locations
WAR File
-
Upload WAR to code.google.com/p/gerrit (manual web browser)
-
Use the "New Download" button
-
Update labels:
-
new war: [release-candidate], featured…
-
old war: deprecated
-
Tag
-
Push the New Tag
git push gerrit-review refs/tags/v2.5-rc0:refs/tags/v2.5-rc0 git push gerrit-review refs/tags/v2.5:refs/tags/v2.5
Docs
make -C Documentation PRIOR=2.4 update make -C ReleaseNotes update
(no PRIOR=… if updating the same release again during RCs)
-
Update Google Code project links
-
Point the main page to the new docs. The link to the documentation has to be updated at two places: in the project description and also in the Links section.
-
Point the main page to the new release notes
Note
|
The docs makefile does an svn cp of the prior revision of the docs to branch the docs so you have less to upload on the new docs. User and password from here: https://code.google.com/hosting/settings If subversion assumes a different username than your google one and asks for a password right away simply hit enter. Subversion will fail and then ask for another username and password. This time enter the username and password from the page linked above. After that subversion should save the username/password somewhere under ~/.subversion/auth folder. |
Issues
How do the issues get updated? Do you run a script to do this? When do you do it, after the final 2.2.2 is released?
By hand.
Our current process is an issue should be updated to say Status = Submitted, FixedIn-2.2.2 once the change is submitted, but before the release.
After the release is actually made, you can search in Google Code for “Status=Submitted FixedIn=2.2.2” and then batch update these changes to say Status=Released. Make sure the pulldown says “All Issues” because Status=Submitted is considered a closed issue.
Mailing List
-
Send an email to the mailing list to announce the release, consider including some or all of the following in the email:
-
A link to the release and the release notes (if a final release)
-
A link to the docs
-
Describe the type of release (stable, bug fix, RC)
-
To: Repo and Gerrit Discussion <repo-discuss@googlegroups.com> Subject: Announce: Gerrit 2.2.2.1 (Stable bug fix update) I am pleased to announce Gerrit Code Review 2.2.2.1. Download: http://code.google.com/p/gerrit/downloads/list This release is a stable bug fix release with some documentation updates including a new "Contributing to Gerrit" doc: http://gerrit-documentation.googlecode.com/svn/Documentation/2.2.2/dev-contributing.html To read more about the bug fixes: http://gerrit-documentation.googlecode.com/svn/ReleaseNotes/ReleaseNotes-2.2.2.1.html -Martin
-
Add an entry to the NEWS section of the main Gerrit project web page
-
Add entry like:
* Jun 14, 2012 - Gerrit 2.4.1 [https://groups.google.com/d/topic/repo-discuss/jHg43gixqzs/discussion Released]
-
Update the new discussion group announcement to be sticky
-
Click on the announcement thread
-
Near the top right, click on options
-
Under options, cick the "Display this top first" checkbox
-
and Save
-
Update the previous discussion group announcement to no longer be sticky
-
See above (unclick checkbox)
-
Merging Stable Fixes to master
After every stable-fix release, stable should be merged to master to ensure that none of the fixes ever get lost.
git config merge.summary true git checkout master git reset --hard origin/master git branch -f stable origin/stable git merge stable
Part of Gerrit Code Review