Purpose of this document is to keep track of all necessary steps to perform project release.
Set up build environment
Process GitHub Pull Requests
You can use your GitHub fork or gatein/gatein-wci master itself to prepare and create a release. Just make sure your origin master is completely in sync with upstream master.
You MUST NOT perform any --force pushes to upstream.
Use rebase to keep linear history while processing pull requests.
Make sure release build works
mvn clean install -Prelease
Perform a release
Create a custom settings.xml for your release (for maximum security use mounted encrypted filesystem, that you unmount afterwards. For a little less security, create a file, and delete it immediately after release is done):
cat > release-settings.xml << EOF
(You also need jboss-public-repository defined or a local nexus mirror, so you have to add that to release-settings.xml)
mvn -s release-settings.xml release:prepare -Prelease
#Now push tag to upstream master
git push upstream master --tags
#Fully build from tag again and upload artifacts to Temporary JBoss Maven Repository
mvn -s release-settings.xml release:perform -Prelease
For security reasons delete the release-settings.xml file.
Check deployed artifacts before releasing
You can now browse your temporary repository to check if everything looks ok. Try adding this temporary repository to your settings.xml, empty your local $HOME/.m2/repository and try referencing the released artifact version in another project (i.e. gatein-portal), and build it.
If everything looks ok, Release the temporary repository. This will make the artifacts publicly visible.
Review changes in the new version relative to previous release. Each new feature, removal of a feature, or a bug fix should have a corresponding JIRA. Close the JIRAs as appropriate - make sure to set 'Fix version' to the released version as appropriate.
Update 'Fix version' of open jiras targeted to this release to the next version release.
- Make sure all required project components were released (WCI, PC, SSO and so on...)
- Update component versions to latest released ones.
- Make sure you download/use clean and right version of application server bundles for packaging
- Check if project builds with clean local repository:
$ mvn clean install -Dmaven.repo.local=/some/local/path/to/empty/dir
- Prepare release with maven
$ mvn clean release:clean release:prepare
- Push changes upstream with git
- Perform release with maven
$ mvn release:perform
- Go to https://repository.jboss.org/nexus/index.html and log in with jboss.org credentials
- Click “Staging Repositories”
- Find matching repository (date and username) and validate it contains proper bits.
- Perform first “Close” and then “Release” operation on staging repository. It’ll deploy artifacts and it is not possible to rollback at this point so be careful!.
Uploading servers and documentation
- Go to packaging/release
$ cd packaging/release
- Run ‘prepare.sh’ with proper version as parameter
- Validate content of ‘packaging/release/test/server-bundles’
- Go into each server, boot it up and manually check there are no errors in console. For each server access “http://localhost:8080/portal’ and perform few basic operations.
- Validate content of ‘packaging/release/upload/docs/’. Open both UserGuide and ReferenceGuide and check there are no obvious errors there.
- Run ‘upload.sh’ with proper version as parameter. This script will upload both documentation and server bundles. It requires proper authorized public key to be used to be able to access server.
$ ./upload.sh 3.3.0.Final
- Script should end up printing set of URLs to the console. Validate that all of those are responding.
Updating project page
Updating project page requires access to Magnolia. Changes can be published later when everything is set up. Remember to update all of those places:
- Announcement on the main project page
- Documentation downloads http://www.jboss.org/gatein/documentation
- Server download http://www.jboss.org/gatein/downloads