layout |
---|
documentation |
This guide describes the process of doing an official release of Mesos.
-
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. Encrypt your Apache password usingmvn --encrypt-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-agent
to avoid typing your passphrase repeatedly.
-
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 Version
as the release version to the next release version.PROTIP: Use
bulk edit
option in JIRA to move the tickets and make sure to uncheck the option that emails everyone about the move. -
Update and commit the
CHANGELOG
for 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.ac
for the release. -
Update and commit
docs/configuration.md
to reflect the current state of the master, slave, and configure flags. -
Update and commit
docs/upgrades.md
with 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.
-
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.Z
is based on semantic versioning scheme.R
is 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.sh
script to accomplish this.$ ./support/tag.sh X.Y.Z R
NOTE: 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.
-
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.sh
script 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.
-
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.sh
script 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.
-
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.
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.