Infrastructure and Deployment Practices

Infrastructure and Deployment Practices

Docker-Based Infrastructure

All OpenMRS environments utilize Docker containerization for consistency and portability. According to the infrastructure documentation, each environment uses different Docker image tags to control versioning:

Development: Latest or development-specific tags

QA: openmrs/openmrs-reference-application-distro:qa

UAT: openmrs/openmrs-reference-application-distro:uat (Platform: :uat)

Production/Demo: openmrs/openmrs-reference-application-distro:demo

When a Docker image tag is pushed to Docker Hub, webhooks trigger automatic deployment to the corresponding environment. This automation is configured through Ansible playbooks maintained in the openmrs-contrib-ansible-docker-compose repository.

Code Promotion Workflow

OpenMRS follows a progressive code promotion model:

  1. 1. Development → Developers commit code to feature branches

  1. 2. Continuous Integration → Automated tests run on every commit

  1. 3. QA Environment → Green builds automatically deploy to QA

  1. 4. UAT Environment → Manual deployment of release candidates

  1. 5. Production → Approved releases deployed through controlled process

Each stage includes validation gates. Code progresses only after passing all tests and receiving appropriate approvals.