Versions Compared

Key

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

...

Create a RSA GPG key of length 4096, upload it to the public server, and add it to the KEYS file (do this process once for each release lead): https://github.com/apache/incubator-mxnet/blob/master/KEYS &

...

See more detailed instructions on creating the key here: https://www.apache.org/dev/openpgp.html#generate-key. Instructions for updating the KEYS file can be found here: https://github.com/apache/incubator-mxnet/blob/master/KEYS#L9-L13at the beginning of the KEYS file. Note that you must use apache email instead of personal email for the key. The following instructions shows how to update the key using svn. 

Code Block
languagebash
themeMidnight
titleAdding Keys
# checkout the apache mxnet repo
svn co https://dist.apache.org/repos/dist/devrelease/incubator/mxnet apache-mxnet
cd apache-mxnet
# update the KEYS file ...
# commit the update
svn commit -m “update keys file for xxx ” --username your_username --password your_passwd

...

Code Block
languagebash
themeMidnight
titleCreating the src tar
linenumberstrue
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

...

Code Block
languagebash
themeMidnight
svn co https://dist.apache.org/repos/dist/dev/incubator/mxnet && cd mxnet/#.#.#.rc0
brew install gpg coreutils
wget https://downloads.apache.org/incubator/mxnet/KEYS
gpg --import ../KEYS


Code Block
languagebash
themeMidnight
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 

...

In ASF, votes are open "at least" 72hrs (3 days). If you don't get enough number of binding votes within that time, you cannot close the voting deadline. You need to extend it.
Send out a  

Make sure the dev community is aware of any ASF votes and results so they can be active in the ongoing voting process.

Send out a notice to vote with the template below.
To get the fingerprint of your keys, run `gpg2 --list-keys --fingerprint`

Info
iconfalse
titleVote on @general email template


To: general@incubator.apache.org
Subject: [VOTE] Release Apache MXNet (incubating) version $release.rc0


Dear community,

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

Apache MXNet (incubating) 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 #########:
<link>

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

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

KEYS file available:
<link>https://downloads.apache.org/incubator/mxnet/KEYS

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 no opinion
[ ] -1 do not release this package because...

Best regards,
$RM

...

For linux, we can trigger a release pipeline that builds, tests and publishes the pip wheels and python docker images for us with just a few steps:

  1. Go to https://jenkins.mxnet-ci.amazon-ml.com/job/restricted-mxnet-cd/job/mxnet-stable-release-pipeline/ and  and make sure you have write access to the Jenkins system.
  2. Click "Configure" and update the "Branch specifier" to point to the GitHub branch/tag and click "Save" (The GitHub repository URL is set to apache/incubator-mxnet, if you are releasing using a fork, update this URL too)
    1. For branch, use <branchName>
    2. For tag, use refs/tags/<tagName>
  3. Click "Build with Parameters" from the left pane, modify the following fields as needed and click on "Build"
    1. MXNET_VARIANTS : Make sure all supported cu* flavors are present
    2. RELEASE_BUILD" : Keep the box Unchecked
    3. CD_RELEASE_JOB_NAME : Do not modify this field
    4. VERSION : Mention the MXNet release tag here e.g. 1.8.0, 2.0.0 (This tag is only used in naming python docker images.)
  4. This triggers the release pipelines for different cpu and cu* flavors which can be found here here https://jenkins.mxnet-ci.amazon-ml.com/job/restricted-mxnet-cd/job/mxnet-stable-release-job/ . You can click on "Open Blue Ocean" from the left pane to check pipeline status. There are 3 pipelines that get trigerred:
    1. First pipeline builds the libmxnet binaries for different flavors. Only after this pipeline completes (takes around 2.5 hours), the other two pipelines are triggered, that run in parallel.
    2. Second pipeline "python/pypi" publishes the pip wheels to https://dist.mxnet.io/python/.
    3. Third pipeline "python/docker" publishes the python docker images to https://gallery.ecr.aws/w6z5f7h2/mxnet/python.
  5. If any job in any of the three pipelines fails, go through the corresponding logs and either
    1. Re-trigger the pipeline in case it's a flaky failure or
    2. Root cause and fix the issue and then re-trigger the pipeline.
  6. Once all pipelines are green, Python wheels and Python docker images for all variants are published to their respective targets. Now we need to move these released artifacts to their final locations so that they are available to users:
    1. Python wheels (for this release) from https://dist.mxnet.io/python/ go to PyPI.
      1. Identify the wheels by the version number, date created, and variant string
      2. Download the above wheels, give them another test if needed, and upload them to PyPI
      3. For more info regarding publishing pip wheels to Pypi, please contact zhasheng@apache.org
    2. Python docker images (for this release) from https://gallery.ecr.aws/w6z5f7h2/mxnet/python go to dockerhub.
      1. Identify the docker images by the version number, date created, and variant string
      2. Pull each docker image to local (docker pull public.ecr.aws/w6z5f7h2/mxnet/python:<tag>)
      3. Tag downloaded images (docker tag …)
      4. Login to dockerhub (docker login ...)
      5. Push images (docker push …)

...

  1. Add the new installation version on the get_start page: Set the new version to be default, and add the dropdown option. See this example
  2. Add download links to the install archives. See this example. Make sure to use archive.apache.org for all except the current one.
  3. Update the pip package table in /python/cpu/pip.md and /python/gpu/pip.md. See this example
  4. Update and generate the image file for pip install table.
  5. Add menu options for general version dropdown. Add the new release version number in _config.ym, _config_beta.tml and _config_prod.yml under '- master'.
  6. Update the dropdown versions for python doc. See this example
  7. Update the dropdown versions in header.html. See this example
  8. Prepare and deploy the release version website artifacts, this step requires access permissions to CI Jenkins server

...

  1. Cherry-pick above changes (step 1-5 6 in 3.2.1) from release branch to master branch and v1.x branch. See this example
  2. Set default website version to new release version by updating the RewriteRule in /docs/static_site/src/.htaccess under comment "# Set default website version to current stable". For example: update the version 1.x to the new release version: 
    • RewriteRule ^(.*)$ /versions/1.x/$1 [r=307,L] => RewriteRule ^(.*)$ /versions/{NEW_RELEASE_VERSION}/$1 [r=307,L]
  3. Publish website artifact to the main website
    • Manually trigger pipeline restricted-website-build-master to publish the new website artifact. Make sure that the pipeline finishes successfully.
    • The new website will be published to http://mxnet.incubator.apache.org/. There can be a delay due to some edge caching with Apache infra.
    • After publishing, check the correctness of the main website

...

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 httphttps://mxnet.incubator.apache.org/install/versions/1.8.0/get_started/download.html"

Send an email to announce@apache.orggeneral@incubator.apache.org and dev@mxnet.incubator.apache.org with the subject: [ANNOUNCE] Release Apache MXNet (incubating) version $release and a body along the lines of:

Info
iconfalse


To: announce@apache.org, general@incubator.apache.org, dev@mxnet.incubator.apache.org
Subject: [ANNOUNCE] Release Apache MXNet (incubating) version $release


Dear all,

The Apache MXNet (incubating) community is happy to announce Apache MXNet (incubating) version ##.#.#!

( ## if applicable ## )

Release blog post:
https://blogs.apache.org/mxnet/entry/announcing-apache-mxnet-incubating-1
https://medium.com/apache-mxnet/announcing-apache-mxnet-1-3-0-484ea78c22ad

( ## -- if applicable -- ## )

Apache MXNet (incubating) is a deep learning framework designed for both efficiency and flexibility. It allows you to mix symbolic and imperative programming to maximize efficiency and productivity.

( ## for patch releases ## )

1.3.1 is a maintenance release incorporating important bug fixes and important performance improvements.

( ## -- for patch releases -- ## )

A full list of the changes in this release can be found in the release notes:
https://cwiki.apache.org/confluence/x/eZGzBQ

A link to the download page can be found here:
httphttps://mxnet.incubator.apache.org/install/versions/1.8.0/get_started/download.html

If you prefer to build from source and experiment with various compile-time configuration options, use this link to get the instructions:
httphttps://mxnet.incubator.apache.org/install/index.htmlget_started/build_from_source

Or you can download and play with MXNet easily using one of the options below:

1. The Pip packages can be found here:
https://pypi.python.org/pypi/mxnet

2. The Docker Images can be found here:
https://hub.docker.com/r/mxnet/python/

Links in Maven to the published Scala packages:

https://repository.apache.org/content/repositories/releases/org/apache/mxnet/
https://repository.apache.org/#nexus-search;quick~org.apache.mxnet

and to the experimental Clojure packages:
https://repository.apache.org/content/repositories/releases/org/apache/mxnet/contrib/clojure/


The Docker images:
https://hub.docker.com/u/mxnet/

The Pip package:
https://pypi.python.org/pypi/mxnet

The release tag:
https://github.com/apache/incubator-mxnet/tree/#.#.#

MXNet Resources

- Our discussion forum (https://github.com/apache/incubator-mxnet/discussions)
- MXNet dev mailing list (https://lists.apache.org/list.html?dev@mxnet.apache.org)
- StackOverflow mxnet tag (https://stackoverflow.com/questions/tagged/mxnet)
- MXNet website (https://mxnet.incubator.apache.org)
- Follow MXNet Development on Github (https://github.com/apache/incubator-mxnet/issues)
- MXNet Confluence Wiki for Developers (https://cwiki.apache.org/confluence/display/MXNET)
- Apache Slack #mxnet Channel (https://the-asf.slack.com/archives/C7FN4FCP9)

Social Media

- Apache MXNet on Twitter (https://twitter.com/apachemxnet)
- Contributor and user blogs about MXNet (https://medium.com/apache-mxnet)
- Discuss MXNet on r/mxnet (https://www.reddit.com/r/mxnet)
- Apache MXNet YouTube channel (https://www.youtube.com/apachemxnet)
- Apache MXNet on LinkedIn (https://www.linkedin.com/company/apache-mxnet)


For more information on Apache MXNet (incubating), please see:
https://mxnet.incubator.apache.org/


Best regards,
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.

https://cwiki.apache.org/confluence/x/BINjB


...