Table of Contents |
---|
There are several types of releases:
- "Module Release" - several need actual releases to get rid of "pre" https://github.com/openmrs/openmrs-distro-referenceapplication/blob/40c3f8309fa446c44ce0cdd8cbb9fc79aa19308c/frontend/spa-build-config.json#L30C1-L34C45 But they are stable. Need stronger release cadence around modules.
- "RefApp Release": https://github.com/openmrs/openmrs-distro-referenceapplication/blob/3.0.0-beta.11/frontend/spa-build-config.json specifies the version of each .
- "QA Release"
- "Tags": Moment in time snapshot - what the repo looked like at a particular point in time (points to a particular commit at a particular time where we released something)
When we "Release O3", there are 3 major things to do:
( Step 0 is pushing to test3 for the pre-release testing)
1) Release the O3 RefApp in GitHub here
2) Update the O3 RefApp Docker Containers
3) Push the new O3 RefApp release to our "production" environment, the O3 Demo (environments shown below)
dev3 | test3 | o3 |
---|---|---|
Unstable integration environment Most recent committed dev work | QA environment Most Recent Release | Demo/Production environment A specific version of O3 RefApp release |
As Of July 2023
Step 1: QA RELEASE:
ObtainFIRST, obtain squad permission/buy-in to do a release
.Task A: CREATE RELEASE PR
In (e.g. announce on #openmrs3). THEN, in 1 PR, 2 Commits are needed: (Example)
- Step 1.1) Create Release PR:
- TO ADD VERSIONING: Release Commit: (release) Create release commit for beta.9' This fixes the version numbers. Because we don't want the test3 version to be deployed on dev3 because that could undo more recent changes. So, in dev3, we ignore any release with the string '(release'
- Why: Pins a specific version # for all modules that were set as "next" or "SNAPSHOT". This is currently manual because there's still some human judgement and decision making for several specific modules. Example: https://github.com/openmrs/openmrs-distro-referenceapplication/pull/737/commits/f588d806c2511d71f419268d3631b1dfa98781a3
- TO PROTECT DEV3: Release-Revert Commit: (release-revert) Reset to dev versions Second Commit with release revert message that unsets the fixed version numbers.
- Why: Ensures 'main' branch gets back to state where it is still pointing at 'next', to preserve the cutting-edge state of the dev3 environment.
- TO ADD VERSIONING: Release Commit: (release) Create release commit for beta.9' This fixes the version numbers. Because we don't want the test3 version to be deployed on dev3 because that could undo more recent changes. So, in dev3, we ignore any release with the string '(release'
- Step 1.2) Add Tags
- Tag Release Commit with a tag named after the version number
Step 2: QA RELEASE (Automated)
Release is Triggered Due to the Tag AND Test3 is Auto-Rebuilt
- , as shown in the tag list screenshot here:
- , as shown in the tag list screenshot here:
- Step 1.3) QA Release then Happens Automatically
- The Tag triggers the QA Release, AND the auto-rebuilding of Test3. In our Bamboo CI, the Deployment project called "Distribution 3.x Releases" is only triggered by tags.
- The Tag triggers the QA Release, AND the auto-rebuilding of Test3. In our Bamboo CI, the Deployment project called "Distribution 3.x Releases" is only triggered by tags.
- Step 1.4) Announce test3 release & version number to community in #openmrs.
Step 2: Manual Checks
- Confirm that tests are passing satisfactorily in Test3. Using the O3 QA Spreadsheet is highly recommended, in addition to checking the automated tests. Go through both the Baseline Checklist and any checks specific to that release - so that new features get some review.
Step 3:
REFAPP RELEASE (Manual)O3 RefApp Release
Go to the Deployment Project, "Deploy Reference Application 3.x" (under the "Deploy" option in the menu)
Click the cloud icon for the QA build:
- "Create new release" → Use the most recent last successful build, and name the release one version number higher than the last one:
Deploy last successful build
- .
4. Announce O3 Demo release & version number to community in #openmrs3 and on Talk.
Note: You can see the history of releases here.