Pipeline definition for Low Code Solutions

The pipeline is structured by default in the following procedure:

  • Prepare
  • Build
  • Pack
  • Deploy-dev
  • Test-dev
  • Deploy-test (optionally)
  • Test-test (optionally)
  • ...
  • Puplish
  • Deploy-prod (optionally)
  • Test-prod (optionally)
  • ...

General

All pipeline jobs/steps can be retriggered if its needed or a job failed. Use the 'Retry' button in the view of the job in GitLab. Jobs that have dependencies to other jobs are retriggerable only 1 hour because the created artifacts of a job are only kept for 1 hour. If the artifacts are expired a error message like
There has been a missing dependency failure
will be shown.
If you get the error
ERROR: Job failed (system failure): timedout waiting for pod to start
while trying to start a pipeline job check the resource workload (allocated resources). Because the error means that the GitLab-runner was not able to start a pod for executing the pipeline job in a certain time. The reason can be that the available resources (cpu, memory) of the worker nodes are insufficient.

Stage Prepare

The stage prepares the needed Solution Envoy files from the design time information.

prepare-api-spec-gen

This job takes API namespace Design Model-files provided as input and creates the swagger.json files in the format Swagger 2 and OpenApi 3.

prepare-denormalized-domain-model

This job takes a normalized design model of a solution and converts it to its denormalized model form that is needed for the build steps. The denormalized model (json files) can be interpreted by the Solution Envoy.

pepare-validate-design-model

Validates the Design Model (API Model, Domain Model and Solution Manifest). The result is saved in a result.json and can be downloaded from GitLab in the Job artifacts section.

Stage Build

The stage builds the solution artifacts needed for the deployment.

build-bpm-toolkit

The job takes one or more swagger files and transforms them into BPM importable toolkits. The toolkits are downloadable in the details view of a solution in the Solution Envoy dashboard.

build-low-code-gen-ts

This job takes the domain model of the solution and generates/includes all code neccessary to produce a working solution action executable. The resulting artifact will be a Node.js application that runs on a nodejs Solution Envoy.

Stage Pack

The stage builds and packs all needed deployment artifacts.

pack-deployer-cli

Creates the docker image containing the needed denormalized model files for the pre deploy jobs of a solution. The created docker image will be pushed into the configured docker registry in the configuration management (configuration name ssob-sdo-docker-push). In OpenShift the docker images should be pushed into the ssob-sdo namespace.

pack-helm-chart

Creates the helm chart for deploying the solution. This helm chart is used in the deploy-dev (deploy-test,...) stage.

pack-solution-docker

Creates the docker image containing the needed denormalized model files for the solution. The created docker image will be pushed into the configured docker registry in the configuration management (configuration name ssob-sdo-docker-push). In OpenShift the docker images should be pushed into the ssob-sdo namespace.

Stafe Deploy-dev/test

deploy-helm-chart-dev/test

First copies or retag the needed docker image from the ssob-sdo namespace into the regarding Solution Envoy namespace. Then it deployes the solution into the specified Solution Envoy using the built and retagged images and the solution helm chart. The needed deployment information (configuration name ssob-sdo-solution-deploy) and helm variables (configuration name ssob-sdo-values-yaml) are provided by the configuration management (see solution specific configuration).

Stage Publish

publish-helm-chart

This job saves the created solution helm chart into the configured repository. The repository is defined in the configuration management (configuration name ssob-sdo-helm-push, see cluster wide configuration). A deploy prod Solution Envoy stage can than install a solution directly from the helm chart repository.