UgandaEMR leverages the OpenMRS infrastructure on BinTray offered by JFrog, which is a maven based distribution service. This allows UgandaEMR modules to be used by the greater OpenMRS community, if needed and automation of the processes for release management.
The release process uses the maven release plugin
The following must be setup
- Bintray access to the repository servers
- SSH keys for GitHub access for the computer to be used to carry out the release
- Write access to the repositories to be released
- Maven 3.3.9 and Java 8
The process for releasing is as follows:
-
Setup Bintray credentials in the local .m2 repository settings in the settings.xml
`
openmrs-repo
openmrs-repo-modules
openmrs-repo-releases
openmrs-repo-snapshots
`
-
Create a new clone of the project directly from the module repository, recommended is to name the clone release-openers-module-XXX. This differentiates it from the regular working repositories
-
Pull all the changes from the master branch
-
Prepare for release by running the command
mvn release:prepare
and follow the interactive instructions there are usually no changes required from the defaults. This prepares the artifacts for release -
Perform the release by running the command
mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"
there are is usually no user intervention needed -
Update the release versions in the pom.xml files for any dependent modules and repeat the process from #2 above
The order of releasing the module is usually as follows, with the ones at the top of the list being released first:
- openmrs-module-fingerprint - does not have any dependencies on any modules
- openmrs-module-ugandaemrsync - has a dependency on ugandaemrreports but does not require an up-to-date version
- openmrs-module-ugandaemrreports - has a dependency on ugandaemrsync
- openmrs-module-aijar - has the latest versions of all the modules
- openmrs-module-ugandaemr-poc - depends on aijar distribution modules
- Custom distributions based on UgandaEMR:
- openmrs-module-ugandaemr-iss - ISS custom implementation
- Openmrs-module-ugandaemr-mulagoemr - MUJHU custom implementation for MCH in Mulago and Kawempe hospitals
- openmrs-module-ugandaemr-prisonemr - Uganda Prisons Service distribution
- openmrs-module-ugandaemr-updfemr - Uganda People's Defence Forces distribution
Once the release process has been completed the demo site needs to be updated with the latest release version
There are times when performing the release fails, usually due to permission errors (403 Forbidden) or if the servers are not available. In this case the steps below can be used to deploy the artifacts manually
- Checkout the tag for the release
git checkout tag
- Run
mvn clean deploy
which compiles the artifacts for the tag and deploys them to the relevant repositories