Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Warning
titleWarning

This page is now hosted on https://odp.finos.org/docs/development-infrastructure/continuous-delivery/

Continuous Delivery (CD) allows project leads and committers to configure automated processes to build and deploy their software. FINOS provides a dedicated OpenShift instance that can be used for this purpose.

...

In order to configure Continuous Delivery, the project must meet few requirements and some configuration must be defined.

  1. Get familiar with OpenShift concepts; keep in mind that most of them are inherited by Kubernetes, which is the orchestration engine used by OpenShift.
  2. Memory (size) and CPU (number) requirements must be known upfront
  3. The deployment strategy must be known upfront; default is RollingDeployment, which spins up a new container in parallel to the existing one, switches traffic when the new one is ready and finally kills the existing one.
  4. Collect all passwords and secrets that are needed by the applications to run; the Foundation Staff will register these entries as secrets in OpenShift and deliver secret key references
  5. The build process MUST generate a folder that:
    1. MUST contain all the artifacts to run the application; for Maven builds, the assembly plugin can be used
    2. MUST contain a (Unix) run script; for Maven builds, the appassember plugin can generate it
    3. MUST NOT contain any password, secret or sensitive data (like emails, names, addresses, etc) in clear text; OpenShift secrets provide a safe way to manage them
  6. Follow the instructions below to define an OpenShift template called .openshift-template.yaml, in the root folder of the GitHub repository

...

  • The deployment strategy, defaults to Rolling
  • The container configuration
    • The image to use to create the container; this must match with the ImageStream output defined above
    • TCP/UDP ports to expose; in this case port 8080 is open at container level
    • The readinessProbe detects if the container is unhealthy
    • Container environment variables can be defined in clear text (ie LOG4J_FILE) or loaded from a secret key reference; secrects are managed by the Foundation Staff and are normally used to manage credentials used to access the Open APIs provided by ODP.
  • The deployment configuration trigger, pointing to the latest tag of an image called ${BOT_NAME}

...