...
These steps are somewhat covered in the script on Marc Spehlmann's gist. The individual steps below explain what happens in the script. Also, the script must be modified to do some of things covered here. It's a rough guide.
i. Select a commit to base the release
You will create a release branch if this is the first release candidate. Otherwise, checkout the current release branch.
...
git push apache branch-x.y.z
ii. Branch and tag the commit
Test the branch and add commits as needed. If you are on a non-supported platform (mac), use a linux box or docker to test your release. A quickstep Dockerfile can be found here. Once you are happy with the candidate, tag the branch and push the update.
git fetch apache
# to make sure you have the latest master
git checkout apache
/branch-x
.y.z
git checkout -b x.y.z-patch-foo
# the name doesn't matter - it will only be in your local workstation
git cherry-pick b4d1a3...
# or whatever git hashes
# then resolve conflicts, if there are any
# cherry-pick some more commits:
git cherry-pick ....
git cherry-pick .....
git push apache HEAD:branch-x.y.z
git fetch apache
git checkout apache
/branch-x
.y.z
git tag -a x.y.z-rcw -m
"x.y.z release candidate w"
# when making release candidate w of version x.y.z
git push apache x.y.z-rcw
iii. Create the release artifacts
This step involves several steps. First, you create the tarball. Next you will create hashes, and a signature. Full details are provided in the script.
iii. Publish the release artifacts to the dev SVN repo
svn checkout https://dist.apache.org/repos/dist/dev/incubator/quickstep/
cd
quickstepcd quickstep/
# The directory layout is x.y.z/RCw, where w is the release candidate number - RC1 is the first candidate, RC2 the second, and so on.
mkdir
mkdir -p x.y.z/RCw
cd
xcd x.y.z/RCw
cp
cp /tmp/apache-quickstep-incubating-x.y.z.tar.gz* ./
svn add .
svn commit --username=YOUR_APACHE_USER_NAME -m "Quickstep-x.y.z RCw"
b. Make a vote on the Release Candidate
- Have a subject that starts with "[VOTE]"
- Explain what the vote is about
- Explain how to find the artifacts for testing, and include the tag and git tree hash (not release hash!) they correspond to. The tree hash can be viewed with git log --pretty="%T %s".
- Explain what each type of vote means
- Explain the conditions for the vote passing, including how long the vote will remain open for.
- Include a link to this wiki page so voters can read the instructions in it on how to test, verify, and vote.
- Explain how you tested it.
- At your discretion, discuss what dependencies or tools you used to compile or run it, like gcc, and so on.
...