...
Next, ensure that all MXNet versions are correct in the code base on the release branch (TODO see this example commit). You should grep through the codebase to find all instances of the version string. Some known places to change are:
- TBDTODO
Finally, update CHANGES.txt
with this script in the MXNet repository. CHANGES.txt
captures all the patches that have made it into this release candidate since the last release.
TODO
$ export MXNET_HOME=<your Spark home>
$ cd mxnet
# Update release versions
$ vim dev/create-release/generate-changelist.py
$ dev/create-release/generate-changelist.py
This produces a CHANGES.txt.new
that should be a superset of the existing CHANGES.txt
. Replace the old CHANGES.txt
with the new one (TODO see this example commit).
...
- Make a shortened link to the full list of JIRAs github issues using https://s.apache.org/
- If possible, attach a draft of the release notes with the email
- Make sure the voting closing time is in UTC format. Use this script to generate it - TODO
- Make sure the email is in text format and the links are correct
...
After the vote passes, create the release. To upload the binaries, you have to first upload them to the dev directory in the Apache Distribution repo, and then move the binaries from dev directory to release directory. This “moving” is the only way you can add stuff to the actual release directory.
TO BE TODO UPDATED WITH MXNET SCRIPTS
...
MXNet always keeps two releases in the mirror network: the most recent release on the current and previous branches. To delete older versions simply use TBD TODO. The ... TODO file in the website ... must also be updated to reflect the changes. For instance, the two releases should be 1.1.1 and 1.0.2, but not 1.1.1 and 1.1.0.
...
Check out the tagged commit for the release candidate that passed and apply the correct version tag.
TODO
$ git checkout v1.1.1-rc2 # the RC that passed
$ git tag v1.1.1
$ git push apache v1.1.1
# Verify that the tag has been applied correctly
# If so, remove the old tag
$ git push apache :v1.1.1-rc2
$ git tag -d v1.1.1-rc2
...
grep
through the repository to find such occurrences- References to the version just released. Upgrade them to next release version. If it is not a documentation related version (e.g. inside
mxnet/docs/
or inside...
), add-SNAPSHOT
to the end. - References to the next version. Ensure these already have
-SNAPSHOT
.
Update the
...
MXNet Website
The website repository is located at ...TODO. Ensure the docs were generated with the PRODUCTION=1 environment variable .- TODO
# TODO Add instructions how to build docs and update the website
Next, update the rest of the Spark MXNet. See how the previous releases are documented. In particular, have a look at the changes to the *.md
files in this commit.
TODO
# Add git cmds to update
Then, create the release notes. The contributors list can be automatically generated through through TODO this script. It accepts the tag that corresponds to the current release and another tag that corresponds to the previous (not including maintenance release). For instance, if you are releasing MXNet 1.2.0, set the current tag to v1.2.0-rc2 and the previous tag to v1.1.0. Once you have generated the initial contributors list, it is highly likely that there will be warnings about author names not being properly translated. To fix this, run this other script, which fetches potential replacements from Github and JIRA. For instance:
#
TODO Update to reflect MXNet process
$ cd release-spark/dev/create-release
# Set RELEASE_TAG and PREVIOUS_RELEASE_TAG
$ vim generate-contributors.py
# Generate initial contributors list, likely with warnings
$ ./generate-contributors.py
# Set JIRA_USERNAME, JIRA_PASSWORD, and GITHUB_API_TOKEN
$ vim release-spark/dev/translate-contributors.py
# Translate names generated in the previous step, reading from known_translations if necessary
$ ./translate-contributors.py
Additionally, if you wish to give more specific credit for developers of larger patches, you may use the the following commands to identify large patches. Extra care must be taken to make sure commits from previous releases are not counted since git cannot easily associate commits that were back ported into different branches.
TODO
# Determine PR numbers closed only in the new release
$ git log v1.1.1 | grep "Closes #" | cut -d " " -f 5,6 | grep Closes | sort > closed_1.1.1
$ git log v1.1.0 | grep "Closes #" | cut -d " " -f 5,6 | grep Closes | sort > closed_1.1.0
$ diff --new-line-format="" --unchanged-line-format="" closed_1.1.1 closed_1.1.0 > diff.txt
# Grep expression with all new patches
$ EXPR=$(cat diff.txt | awk '{ print "\\("$1" "$2" \\)"; }' | tr "\n" "|" | sed -e "s/|/\\\|/g" | sed "s/\\\|$//")
# Contributor list
$ git shortlog v1.1.1 --grep "$EXPR" > contrib.txt
# Large patch list (300+ lines)
$ git log v1.1.1 --grep "$expr" --shortstat --oneline | grep -B 1 -e "[3-9][0-9][0-9] insert" -e "[1-9][1-9][1-9][1-9] insert" | grep SPARK > large-patches.txt
Then, update the downloads page, and then the main page with a news item.
Create an Announcement
Once everything is working (website docs, website changes) create an announcement on the website and then send an e-mail to the mailing list. Enjoy an adult beverage of your choice, and congratulations on making a Spark MXNet release.