From Registry version 0.9 forward, and for all versions of all other products, Semantic Versioning will be followed.

Unless otherwise noted, all steps apply to both Match and Registry releases.

Release Candidate (#.#.0-rc.#)

The steps for the Release Candidates are the same as for the Standard Releases, up to and including the tagging of the release. Do not update the public links, and only announce informally.

Note that Config/VERSION (for Registry) and config/VERSION (for Match and Registry PE) should not include the rc label, as this will break upgradeVersionShell.

Standard Release (#.#.0)

  1. Check for latest version of dependent libraries and update if needed.
    1. CakePHP should be updated to the latest minor release of the current version. (Major upgrades should be performed at the start of the next development cycle.)
    2. For Match and Registry PE, run composer audit to see if there are any security issues with dependencies, and resolve those as appropriate.
  2. Review open issues in JIRA for the release. All issues should be resolved (with code committed) or moved to a future release.
  3. Update the product version tag:
    1. Registry v4: Update Config/VERSION, if not already updated, and make sure the version is defined in UpgradeVersionShell::$versions.
    2. Registry PE: Update config/VERSION, if not already updated, and make sure the version is defined in UpgradeCommand.
    3. Match: Update config/VERSION, if not already updated. Make sure the version is defined in UpgradeVersionCommand::$versions.
  4. Check for commits to the most recent hotfix branch that were not released in a patch release. (This may happen if, for example, the latest patch release was canceled with the intent to skip to the next feature release instead.) If the most recent hotfix commit is not in develop, merge the hotfix branch into develop.
  5. Merge develop into main (assuming you're already following both)

    $ git switch develop
    $ git pull origin develop
    $ git switch main
    $ git pull origin main
    $ git merge develop
    (Make sure everything looks OK)
    $ git push origin main
    
  6. Tag the release:

    $ git tag -a 0.8.5 -m 'COmanage Registry v0.8.5'
    $ git push origin 0.8.5
    
  7. Notify the lead of the packaging/container team of the new tag.
  8. The lead of the packaging/container team builds new container images.
  9. Wait for notification from the packaging/container team that packages/images are ready.
  10. Test the release, including upgrading QA servers and installing/deploying from scratch.
  11. Update download link at Directory InstallationRegistry Installation - Source, Registry PE Installation - Source, or Match Installation - Source.
  12. Update TAP release page.
  13. Review Registry Data Model, Registry PE Data Model, or Match Data Model and update the status of tables as appropriate.
  14. In JIRA, flag the release as "Released" with today's date.
  15. Update Release History.
  16. Update Homeincluding the Download link and About This Release.
  17. Update the COmanage Product Roadmap.
  18. If there are any unrelated bug fixes in the prior hotfix series (#.#-1.#), simultaneously release that as the "last maintenance release" of the previous series.
  19. Announce (to comanage-users and comanage-announce). If appropriate and approved, credit additional funding sources.
  20. Begin the Synchronous Code Update Checkpoint process (Registry PE only).

Bug Fix Release (#.#.#)

A bug release is intended to quickly fix bugs discovered with a standard release. These releases are indicated using a revision number after the related standard release number. There is not necessarily a corresponding JIRA release.

  1. Review open issues in JIRA for the release. All issues should be resolved (with code committed) or moved to a future release.
  2. Update the product version tag:
    1. Registry v4: Update Config/VERSION, if not already updated, and make sure the version is defined in UpgradeVersionShell::$versions.
    2. Registry PE: Update config/VERSION, if not already updated, and make sure the version is defined in UpgradeCommand.
    3. Match: Update config/VERSION, if not already updated. Make sure the version is defined in UpgradeVersionCommand::$versions.
  3. Merge changes from the hotfix release branch into main and develop.
    1. (warning) If main has moved on to a new minor release, do not merge into either branch. You may wish to cherry pick commits if appropriate.
  4. Tag the release from the hotfix branch (though you can also use main if you merged the hotfix branch into main):

    git tag -a 0.8.5 -m 'COmanage Registry v0.8.5'
    $ git push origin 0.8.5
    
  5. Notify the lead of the packaging/container team of the new tag.
  6. The lead of the packaging/container team builds new container images.
  7. Wait for notification from the packaging/container team that packages/images are ready.
  8. Test the release, including upgrading QA servers and installing/deploying from scratch.
  9. Update download link at Directory InstallationRegistry Installation - Source, Registry PE Installation - Source, or Match Installation - Source.
  10. Update TAP release page.
  11. If appropriate, flag the release in JIRA as "Released" with today's date.
  12. Create the next bug fix release in JIRA (#.#.#+1, unless there's a simultaneous feature release, in which case #.#+1.1).
  13. Update Release History.
  14. Update Homeincluding the Download link and About This Release.
  15. Update the COmanage Product Roadmap (if appropriate).
  16. Announce (to comanage-users and comanage-announce). If appropriate and approved, credit additional funding sources.
  • No labels