...
Step 1.7. Tag release candidate (To be done by a committer)
- Go to the GitHub
...
- repositories “releases” tab
- Click “Draft a new release”
- Provide the release tag in the form of “1.0.0.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.md change into the description box from here
- Select “This is a pre-release"
Step 1.8. This step has not been done in the past ![(question)](/confluence/s/34gb19/8804/10mvnxf/_/images/icons/emoticons/help_16.svg)
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.
Step 1.9. Create artefacts for the release and push to the dist folder
...
The src tar - apache-mxnet-src-#.#.#.rc0-incubating.tar.gz:
- Clone the Repo and checkout the release branch remove
- 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
git clone git@github.com:apache/incubator-mxnet.git apache-mxnet-src-0.12.0.rc0-incubating git checkout v0.12.0 git submodule update --init --recursive git checkout 0.12.0.rc0 rm -rf R-package/* rm -rf R-package rm -rf .DS_Store rm -rf CODEOWNERS find . -name ".git*" -print0 | xargs -0 rm -rf brew install gnu-tar gtar -czvf apache-mxnet-src-0.12.0.rc0-incubating.tar.gz apache-mxnet-src-0.12.0.rc0-incubating |
...
...
apache-mxnet-src-#.#.#.rc0-incubating.tar.gz.asc:
...
Details here: http://www.apache.org/dev/release-signing.html#openpgp-ascii-detach-sig
...
Create SHA checksum: apache-mxnet-src-#.#.#.rc0-incubating.tar.gz.sha512
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
gpg --armor --output apache-mxnet-src-0#.11#.0#-incubating.tar.gz.asc --detach-sig apache-mxnet-src-0#.11#.0#-incubating.tar.gz shasum -a 512 apache-mxnet-src-0#.11#.0#-incubating.tar.gz > apache-mxnet-src-0#.11#.0#-incubating.tar.gz.sha512 |
...
Create a folder for this RC in the dist folder:
...
#.
...
#.
...
#-incubating.RC0 folder
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# 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" |
Step 1.10. Validate release package (Committer or Contributor)
As per the Apache documentation, verify that the release candidate artifacts satisfy the following:
- PGP signatures and SHA256 checksum verification -
Code Block | ||||
---|---|---|---|---|
| ||||
svn co https://dist.apache.org/repos/dist/dev/incubator/mxnet && cd mxnet/#.#.#.rc0 brew install gpg coreutils gpg --import ../KEYS |
...
Step 1.11. Test the final release package (Committer or Contributor)
- Download the package that was just uploaded to svn as above.
Test that a build is successful - spinning up a deep learning Ubuntu AMI will give you an environment with all dependencies to build. For example:
Code Block | ||||
---|---|---|---|---|
| ||||
ci/build.py -p ubuntu_gpu |
...
If possible, run a simple (
...
MNIST) test to verify the src.
Step 1.12. Upload the release artifacts to Github release tag
- Edit the release tag from Step 1.7, and upload the release artifacts from Step 1.9 (which were verified in 1.10-1.11).
- After creating RC,
...
- give 2 days to build scala/ R packages if needed before starting vote on dev@.
Step 1.13. Build Scala Packages
Follow the release process to build Scala packages and include the stage repo links in the voting email.
2. Running the voting process for a release:
The full voting process consists of two phases: (1) vote on dev@mxnet.apache.org (3 days) (2) vote on general@incubator.apache.org (3 days). For full documentation refer to the Apache Voting Process.
Step 2.1. Vote on dev@
For the dev@ vote, there must be at least 3 binding +1 votes and more +1 votes than -1 votes. Once that quorum has been reached, the vote then moves onto the general@ vote.
...
Info | ||||
---|---|---|---|---|
| ||||
To: dev@mxnet.apache.org I'm happy to announce the results of the vote. This vote passes with <num> +1 votes (<num> binding) and no 0 or -1 votes. +1 votes I'll continue with the release process and the release announcement will follow in the next few days.
[1] https://lists.apache.org/thread.html/<link> |
Step 2.3. Triage issues and
...
re-vote if necessary
Should any vote fail to reach quorum or release lead determines that another RC needs to go out, the release lead 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.
...
Test multinode and multi gpu (kvstore=1)
3.2. Update the MXNet website
Now that a new version has been drafted on GitHub with source and pip packages published, we need to update the MXNet website.
- Add the new installation version on the install page:
- Set the new version to be default. See this example: docs/_static/js/options.js.
- Add the option and all of the new selector classes. See this example: docs/install/index.md.
- Add news about the new release. See this example: docs/_static/mxnet-theme/index.html.
- Add download links to the install archives. See this example: docs/install/download.md. Make sure to use the Apache distro servers.
- Update the pip package table: http://mxnet.incubator.apache.org/install/ubuntu_setup.html
- Go to http://jenkins.mxnet-ci.amazon-ml.com/and find job “restricted-website-build”. Login if you're not already.
- Click Configure and look for the section with the String Parameters.
- Tags to build
- If this is a minor release, the branch should already be in the first parameter "tags_to_build".
- If this is a major release, you will need to add the branch to the list in the Default Value field. Note these are semicolon separated values.
- Tag list
- If this is a minor release, you will want to bump the version up for the branch you're updating. Example: change 1.2.0 to 1.2.1.
- If this is a major release, you will need to add the new version number to the list. Example: add 1.3.0. Note these are semicolon separated values.
- Click Save.
- Click “Build with Parameters”, verify that the settings you just updated look correct, then click Build.
- The docs will be published to http://mxnet.incubator.apache.org/. There can be a delay due to some edge caching with Apache infra. The restricted-website-build job also runs four times a day.
Not Sure Manually update the website’s download links:
- TODO: link to Apache mirror source, pgp, sha
3.3. Update NEWS.md & README.md on the MXNet master branch
...
Can happen after the announcement
...
.
...
3.4. Review the announcement email content on private@mxnet.incubator.apache.org before sending the announcement.
3.5. Check if this release has to go out on a blog on blogs.apache.org (Sukwon)
In order to get write access to blogs.apache.org/mxnet, one need to first register on blogs.apache.org and ask Henri (bayard@apache.org) to grant the permission.
3.6. Announce the release
Once everything is working (website docs, website changes, 24 hours after upload) create an announcement on the website and then send an
...
email to the mailing list.
Follow instructions from here: http://www.apache.org/legal/release-policy.html#release-announcements
Info |
---|
...
There must be a link in the announcement to the downloads page, not to the dyn/closer page. Downloads must be mirrored from the official Apache distribution site, not from github or other site. e.g. "A Link to the http://mxnet.incubator.apache.org/install/download.html" |
Send an email to announce@apache.org, general@incubator.apache.org
...
and dev@mxnet.incubator.apache.org with the subject: [ANNOUNCE] Apache MXNet <release number> Release and a body along the lines of:
...
Info | ||
---|---|---|
| ||
subject: [ANNOUNCE] Apache MXNet 0.11.0 Release
The Apache MXNet community is happy to announce Apache MXNet version 0.11.0! We hit some major milestones with this release! This is our first official release as an incubating Apache project. The project has now fully migrated its codebase and website to Apache. This release includes code contributions from developers from Apple, Samsung, Microsoft and many other. We have also crossed over 400 contributors on the project so far. The 0.11.0 release features Apple Core ML model converter, Support for Keras v1.2.2.
ADD A DESCRIPTION! - A Flexible and Efficient Library for Deep Learning
A blog that explains an end to end use case of building an ios app using MXNet and Core ML:
The AWS blog that highlights the key features of the release: https://aws.amazon.com/blogs/ai/apple-core-ml-and-keras-support-now-available-for-apache-mxnet/
A full list of the changes in this release can be found in the release notes: https://cwiki.apache.org/confluence/display/MXNET/MXNet+0.11.0+Release+Notes
Link to Download: http://www.apache.org/dist/incubator/mxnet/
To build this project, view this page and select “Build from Source”: http://mxnet.incubator.apache.org/get_started/install.html
The Docker Images can be found here: https://hub.docker.com/u/mxnet/
The Pip package can be found here: https://pypi.python.org/pypi/mxnet
The Release Tag is here: https://github.com/apache/incubator-mxnet/tree/0.11.0
MXNet Resources - Issues: https://github.com/apache/incubator-mxnet/issues - Wiki: https://cwiki.apache.org/confluence/display/MXNET - Mailing list(s): dev@mxnet.incubator.apache.org
For more information on Apache MXNet, please see: https://mxnet.incubator.apache.org/
Thanks! Apache MXNet(incubating) Team _______
DISCLAIMER: Apache MXNet (incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache Incubator PMC. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
|
---|
3.7. Bump up the versions on the master
...
- Once the release is complete, make sure that all PRs that were created during the release process only for the release branch (version updates, README NEWS etc) are now merged into the master branch too.
- Merge the PR you created for the release branch into the master
- Add a new PR to update the version to one up/or next release for pip-releases
3.8. Clean up older releases on ASF mirrors
...
- Clean up older releases stored in https://dist.apache.org/repos/dist/release/incubator/mxnet/ and https://dist.apache.org/repos/dist/dev/incubator/mxnet/
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# checkout apache release repo
svn co https://dist.apache.org/repos/dist/release/incubator/mxnet apache-mxnet-release
cd apache-mxnet-release
# remove the previous release folder
svn rm 1.0.0
svn commit -m 'commit message'
# checkout apache dev repo
svn co https://dist.apache.org/repos/dist/dev/incubator/mxnet apache-mxnet-dev
cd apache-mxnet-dev
# remove the previous release candidate folders
svn rm 1.1.0.rc*
svn commit -m 'commit message' |
Enjoy an adult beverage (or bubble tea) of your choice, and congratulations on making a MXNet release.
...
Task # | Task | Owner | Relative Date | Absolute Date |
PreReqs for Release Start: | PM | |||
1 | Finalize the Release Date | PM | T-15 | |
2 | High Level List of Features and artifact specs | PM | T-15 | |
3 | Prepare Release Notes - draft 1 | PM | T-15 | |
4 | Inform the community | ReleaseLead | T-15 | |
5 | PR to update the Website into master/RB | WebsiteLead | T-14 | |
6 | PR to update the Docs into master/RB | DocsLead | T-14 | |
7 | PR to update the versions into master/RB | ReleaseLead | T-14 | |
8 | Validate License Headers and top Level LICENSE file | ReleaseLead | T-14 | |
9 | Validate/update submodules | ReleaseLead | T-14 | |
10 | Stabilize the code for CI to pass | ReleaseLead | T-14 | |
11 | Merge all necessary PRs into master | Community | T-13 | |
12 | Code Freeze and Release Start: Cut the Release Branch | ReleaseLead | T-10 | |
13 | Finalize the Release Notes based on PRs that got in - final draft | PM | T-10 | |
14 | PR to update the NEWS and README into the RB | ReleaseLead | T-9 | |
15 | Validate the docs build locally by checking release-specific docs like pip install, etc. | DocsLead | T-9 | |
16 | Test part 1: Run the unit Tests on the Release Branch | ReleaseLead | T-8 | |
17 | Test part 2: Run the Nightly Tests | ReleaseLead | T-8 | |
18 | Create the Github Tag for the rc0 | ReleaseLead | T-7 | |
19 | Create the src tar and sign, Upload the src tar | ReleaseLead | T-7 | |
20 | Validate the signatures | Release Lead | T-7 | |
21 | Clone svn repo and do a manual test | Release Lead | T-7 | |
Begin Apache Voting | ReleaseLead | T-7 | ||
22 | Start the vote on dev@ | ReleaseLead | ||
23 | Send out the results of the vote on dev@ | ReleaseLead | T-4 | |
24 | Revote if necessary (Steps 15-22) | ReleaseLead | Not Accounted For | |
25 | Start the vote on general@ | ReleaseLead | T-4 | |
26 | Send out the results of the vote on general@ | ReleaseLead | T-1 | |
End Apache Voting | ||||
27 | Create the final release tag on github | ReleaseLead | T-1 | |
28 | Rename, resign and upload the src tar to final dir | ReleaseLead | T-1 | |
29 | Update the website using tag | Website Lead | T-1 | |
30 | Release the official pip package | pip Lead | T-1 | |
31 | Release the official docker images | Docker Lead | T-1 | |
32 | After 24 hrs, validate the packages are uploaded | Release Lead | T | |
33 | Draft the offical announce email and review | Release Lead | T-1 | |
34 | Send out the email on announce@ | Release Lead | T | |
35 | Update the apache blog | Release Lead | T | |
36 | update the aws blog | PM | T | |
37 | send internal announcement | PM | T | |
38 | Update the version on master | Release Lead | T |
Notes for reference
*NOTES FROM DOCS FOR REFERENCE:* http://incubator.apache.org/guides/releasemanagement.html - 3 +1 votes from IPMC members (these are the votes that count but we should open up to the whole podling community) - For podlings, 2 additional constraints: - Release artifacts must include “incubating” in final file name (ex: apache-mxnet-src-0.10.1-incubating.tar.gz) - Release artifacts must include disclaimer in the release artifacts - The Incubator PMC expects the source releases to be staged on https://dist.apache.org/repos/dist/dev/incubator/podlingName so that they can easily be moved to the release location via svn mv ( http://www.apache.org/dist/incubator/) - After graduating, RC’s go into https://dist.apache.org/repos/dist/dev/ and official releases go into https://dist.apache.org/repos/dist/release/ http://incubator.apache.org/guides/branding.html#disclaimers - Apache Press Team [http://www.apache.org/press/index.html#whoweare] must review and coordinate releases for branding - On website and in release DISCLAIMER file: - Apache Podling-Name is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the name of Apache TLP sponsor. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF. - Website should include Apache Incubator logo: http://incubator.apache.org/guides/press-kit.html - Release should include: - DISCLAIMER - LICENSE - NOTICE - attribution notices http://www.apache.org/legal/release-policy.html - A release must contain source package which is cryptographically signed by Release lead with detached signature. It must be tested prior to voting for release. - Release must only contain appropriately licensed code - Please ensure you wait >=24 hours after uploading a release before making announcements so mirrors catch up - Releases of more than 1GB of artifacts require a heads-up to Infrastructure in advance. - Which directory for what build? http://www.apache.org/legal/release-policy.html#build-directories http://www.apache.org/dev/release-distribution.html - Artifacts MUST be accompanied by: - apache-mxnet-src-0.10.1-incubating.asc - contains OpenPGP compatible ASCII armored detached signature - apache-mxnet-src-0.10.1-incubating.sha - SHA checksum (SHOULD) - Publish KEYS file in distribution directory root - Signing keys MUST be published in KEYS file, SHOULD be available in global public keyserver http://www.apache.org/dev/release-signing#keyserver, SHOULD be linked into web of trust - Keys MUST be RSA & 4096 bits http://www.apache.org/dev/release-publishing.html - Apache RAT can assist in checking license compliance http://creadur.apache.org/rat/ - Eventually we should set up a build system to sign our releases with cryptographic signatures. For now we’ll do it manually. http://www.apache.org/dev/release-signing.html - Create a signature and sign releases as mentioned above
...