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. Development → Developers commit code to feature branches
2. Continuous Integration → Automated tests run on every commit
3. QA Environment → Green builds automatically deploy to QA
4. UAT Environment → Manual deployment of release candidates
5. Production → Approved releases deployed through controlled process
Each stage includes validation gates. Code progresses only after passing all tests and receiving appropriate approvals.