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

See Release Test Procedure.

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.