...
- Create a release branch
Clone fresh repository copy
Code Block git clone https://git-wip-us.apache.org/repos/asf/sentry.git cd sentry
Checkout master branch
Code Block git checkout master
Check that current HEAD points to commit on which you want to base new release branch. Checkout particular commit if not.
Code Block git log # Check current branch history. HEAD should point to commit that you want to be base for your release branch git checkout abcdef123 # Check out particular commit that should be base for release branch if -^
Create new release branch with name "branch-$version"
Code Block git checkout -b branch-X.Y
Update CHANGELOG in the trunk to indicate the changes going into the new version.
The change list can be swiped from the JIRA release note tool (use the "text" format for the change log). See JIRA Cleanup above to ensure that the release notes generated by this tool are what you are expecting.
Remove -SNAPSHOT from the release branch and commit
Code Block mvn versions:set -DnewVersion=X.Y.Z -DgenerateBackupPoms=false git add . git commit -m "SENTRY-XXXX: Removing -SNAPSHOT from X.Y release branch"
Check your changes and push new branch to Apache repository
Code Block mvn package -Pdownload-hadoop git push origin branch-X.Y
Check that branch was correctly propagated to Apache repository.
Prepare the trunk master for next release (TODO: update change log?)
Code Block git checkout master mvn versions:set -DnewVersion=<X.Y.Z+1>-SNAPSHOT -DgenerateBackupPoms=false git add . git commit -m "SENTRY-XXXX: Preparing for sentry <Release name> development" git push origin master:master
- Send an email announcing new branch
No Format To: dev@sentry.apache.org Subject: New sentry release branch-X.Y I've just created new release branch for upcoming <Release name> release. Please continue committing to master branch as usual. I'll cherry-pick commits to branch-X.Y on per needed basis. Thanks, $RM
...
Check out release branch
Code Block git checkout branch-X.Y
Create tag on this commit to identify precise point where the RC was generated and push this tag to main repository
Code Block git tag -a release-X.Y.Z -m "Sentry X.Y.Z release" #Make sure compiles/tests run fine and rat check is fine mvn clean install -DskipTests mvn test mvn verify -DskipTests (to do the rat check) git push origin release-X.Y.Z
If an rc1, rc2, etc is needed, delete that tag before creating a new one:
Code Block git tag -d release-X.Y.Z git push origin :refs/tags/release-X.Y.Z
Create temporary directory where you'll be preparing all required artifacts
Code Block mkdir -p /tmp/sentry-release-preparations
Create source artifact and move it to your temporary directory (TODO: git verify?)
Code Block git archive --format=tar --prefix=apache-sentry-X.Y.Z-src/ HEAD | gzip > /tmp/sentry-release-preparations/apache-sentry-X.Y.Z-src.tar.gz
Sanity Check
Make sure the tar and the rc match
Code Block cd /tmp/sentry-release-preparations tar -xvf apache-sentry-X.Y.Z-src.tar.gz #Do a fresh clone of the tag git clone https://git-wip-us.apache.org/repos/asf/sentry.git cd sentry/ git checkout tags/release-X.Y.Z cd .. diff -r sentry apache-sentry-X.Y.Z-src
Make sure code compiles and tests pass on the untared src.
Code Block cd apache-sentry-X.Y.Z-src mvn clean install -DskipTests mvn test mvn verify -DskipTests (to do the rat check)
...
$ cd sentry-release $ (gpg --list-sigs <KEY-ID> && gpg --armor --export <KEY-ID> ) >> KEYS $ svn commit -m "Adding PGP public key to KEYS file" KEYS |
Once this file has been updated, you need to publish it in the appropriate dist directory for the project on http://www.apache.org/dist
. To do this, you must copy the file as follows:
This will take some time to propagate in which you can continue with the other steps of the release process.
...