Release Guide
This guide describes the process of doing an official release of Mesos.
Prerequisites
-
Ensure that you have a GPG key or generate a new one, e.g., using
gpg --gen-key. -
Add your GPG public key to the Apache Mesos dist repository in the KEYS file.
- Fetch the svn repository
svn co https://dist.apache.org/repos/dist/release/mesos - Append your public key using one of methods described in KEYS,
e.g.,
(gpg --list-sigs <your name> && gpg --armor --export <your name>) >> KEYS. -
Push the commit:
svn ci -
Submit your GPG public key to a keyserver, e.g., MIT PGP Public Key Server.
-
Add your GPG fingerprint to your Apache account.
-
Create a Maven settings file (
~/.m2/settings.xml) for the Apache servers where you must copy your encrypted Apache password which you can get from runningmvn --encrypt-password(NOTE: you may need to first generate a master password.<settings> <servers> <server> <id>apache.snapshots.https</id> <username>APACHE USERNAME</username> <password>APACHE ENCRYPTED PASSWORD</password> </server> <server> <id>apache.releases.https</id> <username>APACHE USERNAME</username> <password>APACHE ENCRYPTED PASSWORD</password> </server> </servers> </settings> -
Use
gpg-agentto avoid typing your passphrase repeatedly.
Preparation
-
Go to Apache Jira and make sure that the CHANGELOG for the release version is up to date.
NOTE: You should move all Unresolved tickets marked with
Fix Versionas the release version to the next release version.PROTIP: Use
bulk editoption in JIRA to move the tickets and make sure to uncheck the option that emails everyone about the move. -
Update and commit the
CHANGELOGfor the release.NOTE: You should use JIRA to generate the CHANGELOG for you. Click on the release version in JIRA and click on the
Release Notes. Make sure to configure the release notes in text format. -
If not already done, update and commit
configure.acfor the release. -
Update and commit
docs/configuration.mdto reflect the current state of the master, slave, and configure flags. -
Update and commit
docs/upgrades.mdwith instructions about how to upgrade a live cluster from the previous release version to this release version. -
If this is a major release please write and commit documentation for this feature.
Tagging the release candidate
-
Ensure that you can build and pass all the tests.
$ make -j3 distcheck -
First tag the required SHA locally.
$ git tag <X.Y.Z-rcR>NOTE:
X.Y.Zis based on semantic versioning scheme.Ris release candidate version that starts with 1. -
Tag the release externally and deploy the corresponding JAR to the Apache maven repository. It is recommended to use the
support/tag.shscript to accomplish this.$ ./support/tag.sh X.Y.Z RNOTE: This script assumes that you have the requisite permissions to deploy the JAR. For instructions on how to set it up, please refer to
src/java/MESOS-MAVEN-README. -
It is not uncommon to release multiple release candidates, with increasing release candidate version, if there are bugs found.
-
Update to the next Mesos version in
configure.ac: changeAC_INIT([mesos], [X.Y.Z]))and commit.
Voting the release candidate
-
Once a release candidate is deemed worthy to be officially released you should call a vote on the
[email protected](and optionally[email protected]) mailing list. -
It is recommended to use the
support/vote.shscript to vote the release candidate.$ ./support/vote.sh X.Y.Z R -
The release script also spits out an email template that you could use to send the vote email.
Releasing the release candidate
-
You should only release an official version if the vote passes with at least 3 +1 binding votes and no -1 votes. For more information, please refer to Apache release guidelines.
-
It is recommended to use
support/release.shscript to release the candidate.$ ./support/release.sh X.Y.Z R -
The release script also spits out an email template that you could use to notify the mailing lists about the result of the vote and the release.
NOTE: Make sure you fill the email template with the names of binding voters.
Updating the website
-
After a successful release please update the website pointing to the new release.
-
It is also recommended to write a blog post announcing the feature.
Remove old releases from svn
Per the guidelines when to archive, we should only keep the latest release in each version under development.
-
Checkout the mesos distribution folder:
svn co https://dist.apache.org/repos/dist/release/mesos -
Remove all minor versions that are no longer under development and commit the change.
Set the release date
- Find the released Mesos version on https://issues.apache.org/jira/plugins/servlet/project-config/MESOS/versions, and update the release date.
Update external tooling
- Update the Mesos Homebrew package.
- Update the Homebrew formula for Mesos and test.
- Submit a PR to the Homebrew repo.
- Once accepted, verify that
brew install mesosworks.