The purpose of this document is to document the current Docker setup at Mayo and how this setup can be duplicated at NCI and extended to provide additional testing, reporting and deployment.
Overview
The Mayo development team currently has Docker and Jenkins setup locally to build and test all of the LexEVS components. It is our intent to move this setup to NCI for more permanents and stable location.
Jenkins
When the Jenkins build is started, it simply calls a Docker script, passing in parameters that define the LexEVS component branches.
When the Docker script completes, the Jenkin build captures the test reports (XML) files.
Docker
The Docker script is where all of the work is done. Below is a high level view of what the script does.
- Builds MySQL containers
- Clones LexEVS and LexEVS Remote projects from Git and builds each component.
- Create container for the URI Resolver.
- Build and run Junit tests CTS2
- Run Junit tests against LexEVS
- Load terminologies into LexEVS
- Create container for LexEVS Remote
- Create container for CTS2
- Run Junit tests against LexEVS Remote
- Stop and remove all containers.
NCI
When possible, we would like to move the current Jenkins/Docker setup from Mayo to NCI.
Additionally, we would like to create more standard containers based on NCI's technology stack and have the containers stored in Nexus for us to pull into our builds. For example, we would like to create a container with NCI approved technology. These containers may include the following:
- CentOS 7
- Tomcat 8.x
- Java 8.x
- MySQL 5.6.x
We have found in our testing that versions of the above components are regularly updated and at times, the version we specify in our script is no longer available subsequently breaks our build. Having consistent known versions (based on NCI's tecnology stack) that are available for our builds would provide greater stability.
Next Steps
Once we have the current setup running at NCI, we would like to start looking at the following items:
- Use the build script that builds all of the LexEVS components and deploy them to a NCI DEV server.