Release procedure
Describes the steps leading to a release
Release Procedures
This checklist should help build a release, and make it available for the public. It is the responsible of the QA to have the release done.
Phase 1. Initiate code freeze
- Ensure all committed code since last release is reviewed. Simply go through each commit, and check in the review table that this commit is reviewed.
- Ensure all bugs since last release have been evaluated not to block release. Simply go through each bug and check if it has been evaluated.
- Ensure all fixed issues for the release can be set to status
Ready for release test
. - Send mail to netarchivesuite-users mailing list about state of code. The mail should contain guidelines to what is allowed and expected during code freeze, and a brief list of important features of the upcoming release.
Phase 2. Release test
Phase 3. Actual release
Release Heritrix:
mvn -Darguments='-DskipTests' release:prepare -DautoVersionSubmodules mvn -Darguments='-DskipTests -Dmaven.javadoc.skip=true' release:perform
- Update NAS to use the new version of heritrix and check that the version is correct in the Constants class
- Check that the build is green on Jenkins.
Check the local code builds and can be deployed.
mvn clean javadoc:javadoc deploy
- Create the release.
mvn -Darguments='-DskipTests' release:prepare -DautoVersionSubmodules mvn -Darguments='-DskipTests' release:perform
- Note that these commands do the release without running tests locally. As long as Jenkins is green, this is a A VERY GOOD IDEA as you don't want to have to clean up after a release that screws up part-way-through
Now checkout the tagged release version in git and build the javadoc with
mvn -DskipTests clean javadoc:aggregate
this will build the full javadoc in the subdirectory target/site.
- Copy the javadoc to the Webdav server at https://sbforge.org/maven/netarchivesuite/apidocs/ under a new folder corresponding to the version. Note that the uploading can take a while as each file is uploaded individually.
- There are many possible ways to do the upload to the server. Here is one
- Install davfs2
cd target/site mkdir dav sudo mount -t davfs https://sbforge.org/maven/netarchivesuite/apidocs/ dav sudo cp -r apidocs dav/<<Version Number>>
- Add the new release to the Releases and downloads page. The released zip should be located in the SBForge Nexus releases repo.
- Finish the release notes for the release.
- Release of wiki documentation
- Add to News on wiki
- Send email to netarchivesuite-announce including major features and link to release notes.
So You Screwed Up
What if the mvn release screws up?
Roll the release back with
mvn release:rollback
Delete the release git tag both locally and on github
git tag -d netarchivesuite-<RELEASE_VERSION> git push origin :refs/tags/netarchivesuite-<RELEASE_VERSION>
- If you got as far as release:perform then you probably have some deployed artifacts on nexus that need to be cleared out. This is very laborious by hand, so there is a script to do it. To use the script
- Modify the script to specify the release version to be cleaned up
Create a .netrc file in your home directory with your credentials for sbforge.org. Something like
machine sbforge.org login bob password bob123
- Be careful. For pity's sake.
Phase 4. End of codefreeze
- Modify pom version if not done so correctly by 'mvn release:perform'.
- Commit and push file.
- Send end-of-codefreeze mail to netarchivesuite-devel.