Release Process
Development freeze`
- Pre-requisites All cards should have been marked for "fixVersion" and "Sprint" in JIRA
- All cards for a release must be easily identifiable. Usually, we have a board defined, which have a parmalink. e.g Release 0.91, Release 0.92
- Community should have been intimated well in advance of development freeze date
- Upgrade to identified released version of omods in dependencies. Release version of omods and upgrade. OpenMRS modules (omods) are released to mvnrepo.openmrs.org
- Bahmni specific modules (omods) are done to repo.mybahmni.org (s3)
- ict4h libraries and modules are available at oss.sontype.org
- OpenMRS modules: openmrs, operation theater, bedmanagement, reporting, webservices rest, reportingrest, idgen, owa, atomfeed
- module repositories:
- If we have OpenMRS dependencies, need to release the snapshot versions and then upgrade them in Bahmni Distro. Find the current versions of the dependencies here
- Branching/Tagging
- Ensure all repositories are appropriately tagged/branched, feature branches merged, all artefacts pushed to repositories (e.g. npm registry), all dependencies (like dependent libraries) reflected appropriately. Jira cards must reflect such tasks clearly.
- See also branching
- TODO: The above link does not list out all the external modules. We should update the wiki.
- Create pipelines for the latest branch in CI/CDBackup and version control CD config
- Define new pipelines and environmentsRefer: Steps to be done in CI/CD
- see also: BranchingTODO: Verify that the branching scripts are updated. Update documentation for npm, and other libraries pushed to public repositories (for nexus)
- Spinning new environments and using them ongoing basis cost money.
- Spinning new on-demand and destroying them post task may be alright, but we should have an indicative costs.
- Any new instance spinning (permanently) should be notified to infrastructure[at]bahmni[dot]org
- ` So the oldest pipeline can be archived/deleted.
- Since we have limited resources (AWS instances), we usually pause the oldest version pipelines and allocate it to master (next release)
- The oldest version pipeline is paused, and if needed to be activated then admins need to reallocate environments.
- After the release of latest version, we should take backup and usually remove Current-3 pipeline config from CI/CD.
Working through the release
- Kick offDiscussion in PAT calls about release process, communicate through talk channel for updates to communitydiscuss late must-have inclusions
- discuss late exclusion - issues/cards, that can not be part of this release.
- Usually we will go through alpha, beta, release candidate releases. Clearly communicate about the releases, environments in community
- See example for 0.91
- The contents would be going to the release notes sections not the document.
- Keep JIRA board updated and in control
- All issues during the QA process must be logged in JIRA.Use PAT calls for decisions like exclusion an issue to next release, inclusion of any issue
- Ensure that all issues part of the release (marked with the appropriate fix version/s) are reflected appropriately in terms of resolution (Ready for testing/ QA done) on the Jira Board.
- Ensure and verify cards marked with "need-doc-update" are reviewed for documentation - for narration, organisation, completeness, clarity
- Releasing artefactsRelease mediumsBahmni Repo on AWS s3 is used development/QA purposes and also for alpha and beta releases.
- JFrog Bintray is used for any final public releases.
- All releases must be done through CI/CD ServerAnyone with github account can view the server. CI login page also has a guest account.
- Admins, core-dev team (those having commit rights) have privilege to release pipelines.
- Release PipelinesFor each release there would be a Pipeline Group defined which will be clearly marked with release number. usually in naming format: Bahmni_Pipeline_Group_Release_[number] e.g. Bahmni_Pipeline_Group_Release_0_91
- Within the Pipeline Group, usually there would be specific pipelines for each component, library, usually also marked with release number. For example - Bahmni_MRS_v0_91, Bahmni_Reports_v0_91 etc snapshot omods - are deployed to S3 artifactory.
- You may get individual artefacts directly from the CD pipeline stages. (Usually a faster way to get specific artefact to test in your dev environment) - for example: run history of Bahmni MRS 0.91
- Functional tests for Bahmni Connect (Android APK build) must be run in developer environments.They are not run through CI/CD anymore (Genymotion AMI costs!).
- Pipeline group "Deploy" - has multiple environment specific pipelines for releases.
- Example: Release_To_Public_v0_90
- Verify uploaded artefact integrity. Check the MD5 checksums.
- With the final artefacts from bintray, verify installation and upgrade.
Going Public
- Public ReleaseWe publish bahmni artifacts which are stable and released versions to bintray.
- Triggered by Admins through the "Release_to_public_[version]" pipeline.
- Publish updated Bahmni developer VM to Atlas. Hashicorp provides tools like vagrant and packer. For Bahmni, we use packer to build Bahmni virtualbox and host it in https://www.vagrantup.com/
- We don’t have a pipeline to build the Vagrant box and push to Atlas. Follow the wiki page on how to build the box. Admins need to push to Hashicorp.
- TODO: Wasn't there a script? Verify
- Deployment in demo environmentsOnce the latest version is available for release, provision or take update on public demo environments - demo’s environments (demo.mybahmni.org and demo-us.mybahmni.org) and for TB demo (demo-tb.mybahmni.org). Admins and select members of core team having env access can do that. These environments are outside the defined networks in Bahmni AWS CI/CD realm. We need to manually deploy.
- Bahmni wiki at Atlasssian for documentation of all features.Documentation is part of the JIRA cards. In case they are not, they should be done before the release notification to public.
- Verify new features and enhancements in the corresponding release has documentation updated on Bahmni Wiki pages.
- Ensure relevant documentation is marked with applicable version.
- Only people with the credentials of Bahmni Youtube Channel can do this.
- Release notes should be in the format as in this page. It must mention the features, enhancements, bug fixes, Known Issues and the installation prerequisites for the corresponding release.
- As explained before, it helps to collaborate on a google doc first for collating the release notes and then upload the final version on the wiki page.
- Share the news - It is now time to announce it to the world about the release!(We would have given intimation in PAT calls and to Bahmni Coalition)
- Share the news on Community forums
- On openMRS talk
- Slack channels like #community
- Winding upDelete the pipelines for the oldest release. i.e Current-3. Backup CI/CD config first.
- Close release in JIRA
- Retrospective with core team, community leads
원문 정보
원문 보기 ↗Bahmni Wiki · CC BY-SA 4.0