Add a release preparation document
Document what it takes to make a Gerrit stable or stable-fix release, and how to release Gerrit subprojects. Change-Id: I462b83d3f4081997481ce5dc4680b0662a6aa977
This commit is contained in:

committed by
Nasser Grainawi

parent
7f7eadff20
commit
21e278e0d2
95
Documentation/dev-release-subproject.txt
Normal file
95
Documentation/dev-release-subproject.txt
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
Making a Gerrit Sub Project Release
|
||||||
|
===================================
|
||||||
|
|
||||||
|
Preparing a New Gerrit Subproject Snapshot for Publishing
|
||||||
|
---------------------------------------------------------
|
||||||
|
|
||||||
|
* You will need to have the following in the pom.xml to make it deployable to:
|
||||||
|
gerrit-maven-repository.googlecode.com
|
||||||
|
----
|
||||||
|
<distributionManagement>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>gerrit-snapshot-repository</id>
|
||||||
|
<name>gerrit Snapshot Repository</name>
|
||||||
|
<url>dav:https://gerrit-maven-repository.googlecode.com/svn/</url>
|
||||||
|
<uniqueVersion>true</uniqueVersion>
|
||||||
|
</snapshotRepository>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<id>gerrit-maven-repository</id>
|
||||||
|
<name>gerrit Maven Repository</name>
|
||||||
|
<url>dav:https://gerrit-maven-repository.googlecode.com/svn/</url>
|
||||||
|
<uniqueVersion>true</uniqueVersion>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement>
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
* Since ubuntu maven is incomplete, also add this to the pom.xml:
|
||||||
|
|
||||||
|
----
|
||||||
|
<build>
|
||||||
|
<extensions>
|
||||||
|
<extension>
|
||||||
|
<groupId>org.apache.maven.wagon</groupId>
|
||||||
|
<artifactId>wagon-webdav-jackrabbit</artifactId>
|
||||||
|
<version>1.0-beta-6</version>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
|
</build>
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
* Add your username and password to your ~/.m2/settings.xml file:
|
||||||
|
|
||||||
|
----
|
||||||
|
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||||
|
<servers>
|
||||||
|
<server>
|
||||||
|
<id>gerrit-maven-repository</id>
|
||||||
|
<username>JohnDoe@example.com</username>
|
||||||
|
<password>OpenSessame</password>
|
||||||
|
</server>
|
||||||
|
|
||||||
|
<server>
|
||||||
|
<id>gerrit-snapshot-repository</id>
|
||||||
|
<username>JohnDoe@example.com</username>
|
||||||
|
<password>OpenSessame</password>
|
||||||
|
</server>
|
||||||
|
</servers>
|
||||||
|
</settings>
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
Making a Gerrit Subproject Snapshot
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
* First build and deploy the latest snapshot and ensure that Gerrit builds
|
||||||
|
with this snapshot
|
||||||
|
|
||||||
|
* Deploy the snapshot:
|
||||||
|
|
||||||
|
----
|
||||||
|
mvn deploy
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
Making a Gerrit Subproject Release
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
* First deploy (and test) the latest snapshot for this subprojects
|
||||||
|
|
||||||
|
* Update the top level pom.xml in the subproject to reflect the new project
|
||||||
|
version (the exact value of the tag you will create below)
|
||||||
|
|
||||||
|
* Commit the pom change and push to the project's repo refs/for/<master/stable>
|
||||||
|
|
||||||
|
* Tag the version you just pushed (and push the tag)
|
||||||
|
|
||||||
|
* Deploy the new release:
|
||||||
|
|
||||||
|
----
|
||||||
|
mvn deploy
|
||||||
|
----
|
222
Documentation/dev-release.txt
Normal file
222
Documentation/dev-release.txt
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
Making a Gerrit Release
|
||||||
|
=======================
|
||||||
|
|
||||||
|
[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
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Prepare the Subprojects
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Publish the latest snapshot for all subprojects
|
||||||
|
* Freeze all subprojects and link:dev-release-subproject.html[publish]
|
||||||
|
them!
|
||||||
|
|
||||||
|
|
||||||
|
Prepare Gerrit
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Update the top level pom in Gerrit to ensure that none of the Subprojects
|
||||||
|
point to snapshot releases
|
||||||
|
|
||||||
|
* Update the poms for the Gerrit version, push for review, get merged
|
||||||
|
|
||||||
|
====
|
||||||
|
tools/version.sh --snapshot=2.3
|
||||||
|
====
|
||||||
|
|
||||||
|
* Tag
|
||||||
|
|
||||||
|
====
|
||||||
|
git tag -a -m "gerrit 2.2.2-rc0" v2.2.2-rc0
|
||||||
|
git tag -a -m "gerrit 2.2.2.1" v2.2.2.1
|
||||||
|
====
|
||||||
|
|
||||||
|
* Build
|
||||||
|
|
||||||
|
====
|
||||||
|
./tools/release.sh
|
||||||
|
====
|
||||||
|
|
||||||
|
* Sanity check WAR
|
||||||
|
|
||||||
|
|
||||||
|
Publish to the Project Locations
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
WAR File
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
* Upload WAR to code.google.com/p/gerrit (manual web browser)
|
||||||
|
** Go to http://code.google.com/p/gerrit/downloads/list
|
||||||
|
** Use the "New Download" button
|
||||||
|
|
||||||
|
* Update labels:
|
||||||
|
** new war: [release-candidate], featured...
|
||||||
|
** old war: deprecated
|
||||||
|
|
||||||
|
Tag
|
||||||
|
~~~
|
||||||
|
|
||||||
|
* Push the New Tag
|
||||||
|
|
||||||
|
====
|
||||||
|
git push google refs/tags/v2.2.2.1:refs/tags/v2.2.2.1
|
||||||
|
====
|
||||||
|
|
||||||
|
|
||||||
|
Docs
|
||||||
|
~~~~
|
||||||
|
|
||||||
|
====
|
||||||
|
make -C Documentation PRIOR=2.2.2 update
|
||||||
|
make -C ReleaseNotes update
|
||||||
|
====
|
||||||
|
|
||||||
|
(no +PRIOR=+... if updating the same release again during RCs)
|
||||||
|
|
||||||
|
* Update Google Code project links
|
||||||
|
** Go to http://code.google.com/p/gerrit/admin
|
||||||
|
** Point the main page to the new docs
|
||||||
|
** 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
|
||||||
|
|
||||||
|
(requires overriding svn username on command line)
|
||||||
|
========================================================================
|
||||||
|
|
||||||
|
|
||||||
|
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 annouce 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
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
====
|
@@ -49,6 +49,8 @@ Developer Documentation
|
|||||||
* link:dev-contributing.html[Contributing to Gerrit]
|
* link:dev-contributing.html[Contributing to Gerrit]
|
||||||
* link:dev-design.html[System Design]
|
* link:dev-design.html[System Design]
|
||||||
* link:i18n-readme.html[i18n Support]
|
* link:i18n-readme.html[i18n Support]
|
||||||
|
* link:dev-release.html[Developer Release]
|
||||||
|
* link:dev-release-subproject.html[Developer Subproject Release]
|
||||||
|
|
||||||
Resources
|
Resources
|
||||||
---------
|
---------
|
||||||
|
Reference in New Issue
Block a user