Release Process - NatLibFi/Skosmos GitHub Wiki

Steps to perform around a release:

  1. Update to the latest translations from Transifex. If there are any changes, create a PR with the changes, merge it and add it to the Release Notes.
  2. Make sure everything is done on the skosmos-2 branch, all issues for the current milestone are closed, performance has not regressed, all issues and PRs that have been closed during the development phase have been tagged with the release milestone, there are no closed issues or PRs in the Next Tasks milestone, documentation is up to date etc. so we are ready for release
  3. In your own Skosmos git repo, make sure you are up to date and on the skosmos-2 branch: git checkout skosmos-2 && git pull
  4. Make sure package dependencies are up to date and installable without any breakage: php composer.phar self-update && php composer.phar update
  5. Create a new maintenance branch and switch to it: git checkout -b v2.19-maintenance && git push origin v2.19-maintenance
  6. Test that the maintenance branch works in staging (log on to finto-web-kk, cd to /var/www/staging.finto.fi): git pull && git checkout v2.19-maintenance && php composer.phar self-update && php composer.phar update && apachectl restart and go to staging.finto.fi to see that the new release of Skosmos is running okay
  7. Commit additional patches to the maintenance branch if necessary
  8. Update the Skosmos version number in composer.json to match the upcoming release (i.e. remove the -dev suffix) and commit this to the maintenance branch (git commit -a -m "set version 2.19 for release") and push to GitHub
  9. Update the Upgrading page and check other wiki documentation possibly affected by the release, e.g. InstallTutorial
  10. When everything is fine, make a release from the maintenance branch using the GitHub Releases UI: Tag version "v2.19", target branch is the v2.19-maintenance branch you just created, the title is "Skosmos 2.19", enter the release notes, and press Publish
  11. Announce the release on skosmos-users: copy the text from the GitHub release page into a new post
  12. Upgrade the production install (finto.fi) to the new release, using the same process as for staging in step 6: log on to finto-web-kk, cd to /var/www/finto.fi (make sure to also migrate new configuration directives, custom CSS changes, headers and footers etc.). Do not checkout to the skosmos-2 branch!
  13. In your own dev environment: Switch your working directory back to the skosmos-2 branch: git checkout skosmos-2
  14. In your own dev environment: Update the Skosmos version number in composer.json to the next expected version (with -dev suffix) and commit to the skosmos-2 branch: git commit -a -m "mark the start of 2.20 development"
  15. Push the commit to GitHub: git push
  16. Add a tag to mark the beginning of a new development cycle: git tag v2.20-dev
  17. Push the new tag to GitHub: git push --tags
  18. Adjust milestones: mark the completed milestone as closed and create a new one for the next cycle
  19. In this document, change the version numbers for the next release

Backporting fixes to the maintenance branch

  1. Make sure you're up to date and switch to the maintenance branch: git pull && git checkout v2.18-maintenance
  2. Go through the list of commits on the main/skosmos-2 branch and cherry-pick the ones you want to have: git cherry-pick -x 7bd1a30a629992fd5c400b0d05e785cdb24f43aa
  3. Push your changes to GitHub: git push
  4. Test that the maintenance branch works in staging: git pull && git checkout v2.18-maintenance && php composer.phar self-update && php composer.phar update --no-dev && apachectl restart
  5. Commit additional patches to the maintenance branch if necessary
  6. Upgrade the production installs to the new release
  7. When you have a suitable set of fixes, make a maintenance release using the GitHub UI