eSaude EMR Platform Release Process
It’s important that all work done on the platform follows the eSaude development process. Once this work is done and the community is ready to perform a platform release, the steps outlined in this document should be followed.

Overview

As of v1.2.0, the eSaude EMR Platform is released as an eSaude App. An eSaude App is just a set of one or more Docker images. When containers are created from the images at runtime, they are linked together using Docker Compose.

  • eSaude Apps are hosted in Docker Registries in the eSaude organisation on Bintray. The images are built using TravisCI (our continuous integration server) and are automatically uploaded to Bintray when a new tag is created in the GitHub repository.

The eSaude EMR Platform App consists of two Docker images - the mysql and tomcat images. New version of both images are released when a new tag is created in GitHub,  but since their version are specified individually in the docker-compose-prebuilt.yml file (the Docker Compose file used for production installation), images with different version could theoretically be used together.

See the sections before for instruction on how to perform new releases of the eSaude EMR Platform App.

MySQL Image

  • A new mysql image should only be released if we want to upgrade the MySQL version, change the way the image is built or if we want to release a new clean install database. If you want to release new metadata to distribute to implementations, see the eSaude EMR Platform Metadata Release Process page.

The eSaude EMR Platform mysql image is built using the Dockerfile in the mysql directory in the GitHub repository.

To upgrade the database version, change the version number in the Dockerfile.

To upgrade the version of the clean database, change the version number in the Bintray URL in the Dockerfile. If you need to make changes to the clean database, the eSaude EMR Platform Metadata Release Process page.

Once you have made your changes to the Docker, see the Release Publishing section below.

Tomcat Image

A new tomcat should be released when we need to upgrade the OpenMRS core version or we need to change the modules (add or remove modules, or upgrade their versions). The image is build using the Dockerfile in the tomcat directory in the GitHub repository.

The OpenMRS core and modules used in the eSaude EMR Platform are hosted in the platform repository in the eSaude organisation on Bintray.

If required, create a new versions in the core or modules package on Bintray and upload a new openmrs.war file or esaude-platform-modules.zip file.

If you need to make Tomcat or Bahmni configuration changes, edit the relevant files in the tomcat directory.

Once new resources have been uploaded to Bintray and configuration changes have been pushed to GitHub, publish new images using the instructions below.

Release Publishing

New containers are built using TravisCI. The configuration can be seen in the .travis.yml file. New images are only pushed to Bintray when a new tag is created in GitHub, so when you have made your changes as describe in the above sections, and are ready to publish a new version, do the following:

1. Bump Version

Use the npm script to create a new version:

npm run create-version <OPTION>

where <OPTION> can be major, minor, patch or a specific semver version (like 1.2.3). This command basically just changes the version in the package.json file. The options will have the following effect:

  • major will increase the first number in the version and set the others to zero
  • minor will increase the second number and set the last one to zero
  • patch will increase the last number

If you specify a specific version, the version in package.json will be set to that version.

2. Create & Push Tag

The command to create and push the tag is: