Distribution Project Layout - PIH/openmrs-distro-rwandaemr-imb GitHub Wiki

Layout of distribution project codebase

The openmrs-distro-rwandaemr project contains the docker files, scripts, and other tools responsible for creating a versioned distribution package out of component artifacts. These artifacts include the OpenMRS core web application, OpenMRS modules, OWAs, configurations, and other components. The distribution project includes specifications for each of these and how they are packaged together for deployment. This project also contains various scripts and tools that enable deployment of the distribution into development, test, and production environments and which enable development, testing, and continuous integration workflows.

.github/workflows

Continuous integration configuration files. See CI processes

These files are responsible for ensuring the distribution artifacts are published on every commit and upon release to the OpenMRS Maven repository.

rwandaemr-xxx directories

Maven sub-modules, responsible for building specific distribution packages

Because the RwandaEMR distribution contains several related but distinct variations that are deployed and in use across the country, this project aims to enable support for each of these via Maven submodules. The convention is that each submodule folder should be named to match the distribution "artifactId" that identifies it within the Maven ecosystem.

For the RwandaEMR, our convention is for each of these distribution packages to start with a "rwandaemr-" prefix, followed by a suffix that uniquely identifies this particular package. For example, at IMB, there is are slight variations between the packages deployed at Rwinkwavu and Butaro hospitals. These are represented by distinct packages in the project structure and produce two related by distinct distribution packages:

  • rwandaemr-imb-rwinkwavu
  • rwandaemr-imb-butaro

As additional distribution variations are added to this project, they should follow a similar model.

tools

Includes sub-directories for various tools that are useful for development, testing, deployment, and administration. Typically these will include:

  • docker-compose.yml files: To use for provisioning new instances in Docker environments
  • Vagrantfiles: To use for testing installations and deployment in VM environments
  • Shell scripts (.sh): Convenience scripts for developers, repository for scripts used in CI, testing, production instances

tests

This is yet to be determined. This is where the OpenMRS reference application places their UI / Smoke tests written in Selenium within the openmrs-distro-referenceapplication project. Other projects may choose to keep this in a separate repository, so this is still TBD.

pom.xml

Parent pom for distributions. This is also intended for use as a parent pom for RwandaEMR-specific modules, as the idea is that all modules would want to stay aligned on the versions of all dependencies that they might declare within their own pom files.


This is an adaptation based on: