Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

The release manager role in Apache MXNet means you are responsible for a few different things:

...

  1. The release candidate should contain all planned features, bug fixes, and code changes above. The release candidate commit should have passed the merge build, pip builds, nightly tests. Docs should also be manually built locally & checked for correctness. TODO: how to retrieve the commit hash.

  2. Tag release candidate
      • Checkout the commit into a new branch "v#.#.#" and push it
      • Go to the GitHub repo’s “releases” tab
      • Click “Draft a new release”
      • Provide the release tag in the form of “v#.#.#.rc0” where 0 means it’s the first release candidate
      • Select the commit by clicking Target: branch > Recent commits > $commit_hash
      • Copy and paste NEWS change into the description box
      • Select “This is a pre-release"
  3. Tag all the dependent submodules for every MXNet release. If a code-change (e.g. bug-fix) is required to a dependent sub-module then we take a branch from the tag and apply the code-change only to the branch for the sub-module so that the change is minimal. This should allow the MXNet release process to have better convergence towards a stable release.

  4. Create artifacts for the release and push to the dist folder

a) The src tar - apache-mxnet-src-#.#.#.rc0-incubating.tar.gx:

      • Clone the Repo and checkout the release branch
      • remove R-package until the licensing issue is resolved
      • Remove all the .git files
      • Remove all other files of the form .* (eg .travis, .DS_Store etc)
      • on MacOS use gnu-tar
      • Try to untar it in a different type of machine and try a classic build with `make`. Follow build instructions in the "Build from Source" section http://mxnet.incubator.apache.org/get_started/install.html
Code Block
languagebash
titleCreating the src tar
linenumberstrue
git clone git@github.com:apache/incubator-mxnet.git --recursive apache-mxnet-src-0.11.0.rc3-incubating
git checkout v0.11.0
git submodule update --init --recursive
git checkout 0.11.0.rc3
rm -rf R-package/*
rm -rf R-package
rm -rf .DS_Store
rm -rf .git*
brew install gnu-tar 
gtar -czvf apache-mxnet-src-0.11.0.rc3-incubating.tar.gz apache-mxnet-src-0.11.0.rc3-incubating

b) apache-mxnet-src-#.#.#.rc0-incubating.tar.gz.asc: 

details here: http://www.apache.org/dev/release-signing.html#openpgp-ascii-detach-sig

c) apache-mxnet-src-#.#.#.rc0-incubating.tar.gz.md5: Create MD5 checksum

d) apache-mxnet-src-#.#.#.rc0-incubating.tar.gz.sha512: Create SHA checksum

...

gpg

...

--armor

...

--output

...

apache-mxnet-src-0.11.0-incubating.tar.gz.asc

...

--detach-sig

...

apache-mxnet-src-0.11.0-incubating.tar.gz

...


md5

...

apache-mxnet-src-0.11.0-incubating.tar.gz

...

>

...

apache-mxnet-src-0.11.0-incubating.tar.gz.md5

...

shasum

...

-a

...

512

...

apache-mxnet-src-0.11.0-incubating.tar.gz

...

>

...

apache-mxnet-src-0.11.0-incubating.tar.gz.sha512

 

 

 

Code Block
languagebash
titleUploading to dist
#.#.#-incubating.RC0 folder: Create a folder for this RC in the dist folder

# Checkout the Apache directory in Apache distribution SVN "dev" repo
$ svn co https://dist.apache.org/repos/dist/dev/incubator/mxnet
# select p
# Make directory for this RC in the above directory
$ cd mxnet
$ mkdir #.#.#.rc0
# Move artifacts into this folder
$ cp ../apache-mxnet-src-#.#.#.rc0-incubating.tar.gz* #.#.#.rc0
$ svn add #.#.#.rc0
$ svn commit -m "Add mxnet-#.#.#.rc0" --username "lxn2"

 

 

...




3.    Validate release package

As per the Apache documentation, verify that the release candidate artifacts satisfy the following:

    • PGP signatures and SHA256/MD5 checksum verification

Example (performed on a Macbook Pro: brew install gpg2 coreutils):

$ svn co https://dist.apache.org/repos/dist/dev/incubator/mxnet && cd mxnet/

...

#.#.#.rc0

$ brew install gpg2 coreutils
$ gpg2 --import ../KEYS

 

...

Code Block
languagebash
firstline1
titleRename and Resign the RC to create GAvalidate the signatures
linenumberstrue
targpg --zxvfverify ./apache-mxnet-src-0.11.0.rc3-incubating.tar.gz.asc
mvgsha512sum apache-mxnet-src-0.11.0.rc3-incubating -check  ./apache-mxnet-src-0.11.0.rc1-incubating
gtar.tar.gz.sha512
gmd5sum -czvf-check ./apache-mxnet-src-0.11.0.rc3-incubating.tar.gz apache-mxnet-src-0.11.0-incubating
 
#create a directory under releases or dist/incubator ? - https://httpd.apache.org/dev/release.html
svn mv https://dist.apache.org/repos/dist/dev/incubator/mxnet/0.11.0.rc3/ http://www.apache.org/dist/incubator/mxnet/mxnet-#.#.#.rc0

...

.md5
    • Test that a build is successful - spinning up a deep learning Ubuntu AMI will give you an environment with all dependencies to build. A `make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1` should do.
    • DISCLAIMER is correct, filenames include “incubating”
    • LICENSE and NOTICE files are correct and dependency licenses are acceptable
      1. LICENSE and NOTICE files at the root of the artifact directory must only reflect the contents of the artifact in which they are contained.
      2. See:

2. Running the voting process for a release:

1. calling votes and triaging issues, revote if necessary

The full voting process is two phases: 3 days on dev@mxnet.apache.org, 3 days on http://general@incubator.apache.org.

For the dev@ vote, there must be at least 3 +1 votes and more +1 votes than -1 votes. Once that quorum has been reached, the vote then moves onto the general@ vote, where anyone can contribute a vote, but only MXNet PMC votes are binding. To pass, there must be 3 +1 PMC votes and more +1 votes than -1 votes. Send out a notice to vote.

EMAIL TEMPLATE: OPENING A VOTE TO DEV@

To: dev@mxnet.apache.org
Subject: [VOTE] Release MXNet version 0.11.0.RC#
 
This is the vote to release Apache MXNet (incubating) version 0.11.0. Voting will start now and close $utc_now+72.
Link to release notes: <Link>
Link to release candidate 0.11.0.rc0: <Link>
Link to pip build: <Link>

 

Please remember to TEST first before voting accordingly:
+1 = approve
+0 = no opinion
-1 = disapprove (provide reason)

 

Once each vote is complete, send out a results email.

 

EMAIL TEMPLATE: VOTING RESULTS

 
To: dev@mxnet.apache.org
Subject: [RESULTS] [VOTE] Release MXNet version 0.11.0.RC#
 
This vote passes with 7 +1 votes (3 bindings) and no 0 or -1 votes.
+1 votes
PMC Members:
* $Name
* $Name 
* $Name
 
Committers:
* $Name
* $Name
 
Community:
* $Name
* $Name
 
0 votes
* No votes
 
-1 votes
* No votes
 
Vote thread:
https://lists.apache.org/list.html?commits@mxnet.apache.org/
I'll continue with the release process and the release announcement will follow in the next few days.
 

$RM

 

Should any vote fail to reach quorum or release manager determines that another RC needs to go out, the release manager should triage the issues, create GitHub issues, and move to fix the issues. Once fixed, make changes to NEWS & README.md in case it specifically lists the old RC# number. Start the process for another release candidate. In the new voting email, detail what has changed since the last release candidate. Repeat until the vote passes.

 

EMAIL TEMPLATE: CANCEL A VOTE

As per the Apache documentation, verify that the release candidate artifacts satisfy the following:

    • PGP signatures and SHA256/MD5 checksum verification

Example (performed on a Macbook Pro: brew install gpg2 coreutils):

$ svn co https://dist.apache.org/repos/dist/dev/incubator/mxnet && cd mxnet/#.#.#.rc0

$ brew install gpg2 coreutils
$ gpg2 --import ../KEYS

Code Block
languagebash
firstline1
titlevalidate the signatures
linenumberstrue
gpg --verify ./apache-mxnet-src-0.11.0.rc3-incubating.tar.gz.asc
gsha512sum --check  ./apache-mxnet-src-0.11.0.rc1-incubating.tar.gz.sha512
gmd5sum --check ./apache-mxnet-src-0.11.0.rc3-incubating.tar.gz.md5
    • Test that a build is successful - spinning up a deep learning Ubuntu AMI will give you an environment with all dependencies to build. A `make -j $(nproc) USE_OPENCV=1 USE_BLAS=openblas USE_CUDA=1 USE_CUDA_PATH=/usr/local/cuda USE_CUDNN=1` should do.
    • DISCLAIMER is correct, filenames include “incubating”
    • LICENSE and NOTICE files are correct and dependency licenses are acceptable
      1. LICENSE and NOTICE files at the root of the artifact directory must only reflect the contents of the artifact in which they are contained.
      2. See:

2. Running the voting process for a release:

1. calling votes and triaging issues, revote if necessary

The full voting process is two phases: 3 days on dev@mxnet.apache.org, 3 days on http://general@incubator.apache.org.

For the dev@ vote, there must be at least 3 +1 votes and more +1 votes than -1 votes. Once that quorum has been reached, the vote then moves onto the general@ vote, where anyone can contribute a vote, but only MXNet PMC votes are binding. To pass, there must be 3 +1 PMC votes and more +1 votes than -1 votes. Send out a notice to vote.

EMAIL TEMPLATE: OPENING A VOTE TO DEV@

To: dev@mxnet.apache.org
Subject: [VOTE] Release MXNet version 0.11.0.RC#
 
This is the vote to release Apache MXNet (incubating) version 0.11.0. Voting will start now and close $utc_now+72.
Link to release notes: <Link>
Link to release candidate 0.11.0.rc0: <Link>
Link to pip build: <Link>

 

Please remember to TEST first before voting accordingly:
+1 = approve
+0 = no opinion
-1 = disapprove (provide reason)

 

Once each vote is complete, send out a results email.

 

EMAIL TEMPLATE: VOTING RESULTS

 
To: dev@mxnet.apache.org
Subject: [RESULTSCANCELLED] [VOTE] Release MXNet version 0.11.0.RC#
 

...

   

...

 

...

We 

...

are 

...

CANCELLING 

...

this 

...

+1 votes
PMC Members:
* $Name
* $Name 
* $Name
 
Committers:
* $Name
* $Name
 
Community:
* $Name
* $Name
 
0 votes
* No votes
 
-1 votes
* No votes
 
Vote thread:
https://lists.apache.org/list.html?commits@mxnet.apache.org/
I'll continue with the release process and the release announcement will follow in the next few days.
 

$RM

 

Should any vote fail to reach quorum or release manager determines that another RC needs to go out, the release manager should triage the issues, create GitHub issues, and move to fix the issues. Once fixed, make changes to NEWS & README.md in case it specifically lists the old RC# number. Start the process for another release candidate. In the new voting email, detail what has changed since the last release candidate. Repeat until the vote passes.

 

EMAIL TEMPLATE: CANCEL A VOTE

To: dev@mxnet.apache.org
Subject: [CANCELLED] [VOTE] Release MXNet version 0.11.0.RC#
    We are CANCELLING this vote because...
    We will address this issue and send out RC#+1 for another vote.

 

EMAIL TEMPLATE: OPEN A VOTE TO GENERAL@

...

vote because...
    We will address this issue and send out RC#+1 for another vote.

 

EMAIL TEMPLATE: OPEN A VOTE TO GENERAL@

This is a call for a releasing Apache MXNet #.#.#-incubating, release
candidate #.

Apache S2Graph community has voted and approved the release.

Vote thread:
https://lists.apache.org/#######

Result thread:
https://lists.apache.org/#########

The source tarball, including signatures, digests, etc. can be found at:
https://dist.apache.org/repos/dist/dev/incubator/mxnet/########

The tag to be voted upon is v0.2.0-incubating-rc3:
<link>

The release hash is #########:
<link>

Release artifacts are signed with the following key:
<link>

KEYS file available:
<link>

For information about the contents of this release, see:
<link to release notes>

The vote will be open for 72 hours.

[ ] +1 Release this package as 0.1.0
[ ] +0 no opinion
[ ] -1 Do not release this package because...

3. Finalizing and posting a release:

1. marking & publishing the official release

Once the release candidate passes the vote, we draft the official release on GitHub and rename the release candidate as the official release.

Draft official release on GitHub:

    • Go to the GitHub repo’s “releases” tab
    • Click “Draft a new release”
    • Provide the release tag in the form of “v#.#.#”
    • Select the commit by clicking Target: master > the passing release candidate tag
    • Copy and paste NEWS change into the description box

Download the nightly pip build, rename, and publish:

    • TODO

Rename and publish the source package:

 

Code Block
languagebash
firstline1
titleRename and Resign the RC to create GA
linenumberstrue
tar -zxvf apache-mxnet-src-0.11.0.rc3-incubating.tar.gz
mv apache-mxnet-src-0.11.0.rc3-incubating apache-mxnet-src-0.11.0-incubating
gtar -czvf apache-mxnet-src-0.11.0-incubating.tar.gz apache-mxnet-src-0.11.0-incubating
 
#create a directory under releases or dist/incubator ? - https://httpd.apache.org/dev/release.html
svn mv https://dist.apache.org/repos/dist/dev/incubator/mxnet/0.11.0.rc3/ http://www.apache.org/dist/incubator/mxnet/mxnet-#.#.#.rc0

TODO

 

3. Finalizing and posting a release:

1. marking & publishing the official release

Once the release candidate passes the vote, we draft the official release on GitHub and rename the release candidate as the official release.

Draft official release on GitHub:

    • Go to the GitHub repo’s “releases” tab
    • Click “Draft a new release”
    • Provide the release tag in the form of “v#.#.#”
    • Select the commit by clicking Target: master > the passing release candidate tag
    • Copy and paste NEWS change into the description box

Download the nightly pip build, rename, and publish:

    • TODO

Rename and publish the source package:

...

    • # Move the sub-directory in "dev" to the
      # corresponding directory in "release"
      $ export SVN_EDITOR=vim
      $ svn mv https://dist.apache.org/repos/dist/dev/incubator/mxnet/mxnet-#.#.#.rc0 http://www.apache.org/dist/incubator/mxnet/mxnet-#.#.#.rc0

...