Building and running CPS locally

Building Java Archive only

Following command builds all Java components to cps-application/target/cps-application-x.y.z-SNAPSHOT.jar JAR file without generating any docker images:

mvn clean install -Pcps-docker -Pncmp-docker -Pcps-ncmp-docker -Djib.skip

Building Java Archive and Docker images

  • Following command builds the JAR file and also generates the Docker image for all CPS components:
mvn clean install -Pcps-docker -Pncmp-docker -Pcps-ncmp-docker
  • Following command builds the JAR file and generates the Docker image for specified CPS component: (with <docker-profile> being one of cps-docker, ncmp-docker or cps-ncmp-docker):
mvn clean install -P<docker-profile>

Running Docker containers

docker-compose/docker-compose.yml file is provided to be run with docker-compose tool and images previously built. It starts both Postgres database and CPS services.

  1. Edit docker-compose.yml
    1. uncomment desired service to be deployed, by default cps-and-ncmp is enabled. You can comment it and uncomment cps-standalone or ncmp-standalone.
    2. To send data-updated events to kafka,
      • uncomment the zookeeper and kafka services.
      • uncomment environment variables
        • KAFKA_BOOTSTRAP_SERVER: kafka:9092
  2. Execute following command from docker-compose folder:

Use one of the below version type that has been generated in the local system's docker image list after the build.

VERSION=latest DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
or
VERSION=<version> DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d

Running or debugging Java built code

Before running CPS, a Postgres database instance needs to be started. This can be done with following command:

docker run --name postgres -p 5432:5432 -d \
  -e POSTGRES_DB=cpsdb -e POSTGRES_USER=cps -e POSTGRES_PASSWORD=cps \
  postgres:12.4-alpine

Then CPS can be started either using a Java Archive previously built or directly from Intellij IDE.

Running from Jar Archive

Following command starts the application using JAR file:

DB_HOST=localhost DB_USERNAME=cps DB_PASSWORD=cps CPS_USERNAME=cpsuser CPS_PASSWORD=cpsr0cks! \
  DMI_USERNAME=cpsuser DMI_PASSWORD=cpsr0cks! \
  java -jar cps-application/target/cps-application-x.y.z-SNAPSHOT.jar

Running from IntelliJ IDE

Here are the steps to run or debug the application from Intellij:

  1. Enable the desired maven profile form Maven Tool Window
  2. Run a configuration from Run -> Edit configurations with following settings:
    • Environment variables: DB_HOST=localhost;DB_USERNAME=cps;DB_PASSWORD=cps CPS_USERNAME=cpsuser CPS_PASSWORD=cpsr0cks! DMI_USERNAME=cpsuser DMI_PASSWORD=cpsr0cks!

Accessing services

Swagger UI and Open API specifications are available to discover service endpoints and send requests.

  • http://localhost:<port-number>/swagger-ui.html
  • http://localhost:<port-number>/api-docs/cps-core/openapi.yaml
  • http://localhost:<port-number>/api-docs/cps-ncmp/openapi.yaml
  • http://localhost:<port-number>/api-docs/cps-ncmp/openapi-inventory.yaml

with being either 8080 if running the plain Java build or retrieved using following command if running from docker-compose:

docker inspect \
  --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' \
  <cps-docker-container>

Enjoy CPS !