...
This is set of recommendations and guidelines for each ONAP project to follow as they work on creating a docker image build process.
High Level Artifact Build Flow
Ideally, the docker image build process should be fully separated from the Java/Python artifact build process. This means:
- One set of Jenkins jobs will build and deploy Java/Python artifacts to Nexus
- One set of Jenkins jobs will build the docker images using Java/Python artifacts already deployed to Nexus before
- Jenkins job dependencies should be set up so that the former can trigger the latter
Once we include considerations of the SNAPSHOT/STAGING/RELEASE docker tags, we end up with the following general development/release flow:
- Produce SNAPSHOT Java artifact. Test this in a SNAPSHOT docker image.
- Produce staging (release candidate) Java artifact. Test this in a SNAPSHOT docker image.
- Produce release Java artifact by picking one of the candidates from staging.
- Produce STAGING docker image using the release Java artifact. Use this in E2E test flows.
- Produce RELEASE docker image by picking one of the candidate STAGING docker images.
Migrating from OPEN-O Docker Builds
...
The OPEN-O docker images were created specifically for CSIT only, which is why it was ok to directly incorporate services like MySQL / Redis in the microservice docker images themselves. In ONAP, the docker images are intended to be run for production, so any necessary services should be run as separate docker containers outside your microservice container. So, please define your docker images so that they can have things like MySQL IP addresses passed in from the outside.
Docker Requirements from OOM
The OOM project may place additional requirements on the docker image definitions for things like service discovery, etc. TBD