-
Sören Henning authoredSören Henning authored
.gitlab-ci.yml 24.36 KiB
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_REF_PROTECTED != "true"'
when: never
- when: always
stages:
- build
- test
- check
- deploy
- smoketest
default:
tags:
- exec-docker
.dind:
tags:
- exec-dind
# see https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
# for image usage and settings for building with TLS and docker in docker
image: docker:20.10.12
services:
- docker:20.10.12-dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
.kaniko-push:
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CR_PUBLIC_HOST}\":{\"auth\":\"$(printf "%s:%s" "${CR_PUBLIC_USER}" "${CR_PUBLIC_PW}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- >
if [ $IMAGE_TAG ]; then
KANIKO_D="$KANIKO_D -d $CR_PUBLIC_HOST/$CR_PUBLIC_ORG/$IMAGE_NAME:$IMAGE_TAG"
export PUBLISHED_IMAGE_TAG=$IMAGE_TAG
elif [ $CI_COMMIT_TAG ]; then
KANIKO_D="$KANIKO_D -d $CR_PUBLIC_HOST/$CR_PUBLIC_ORG/$IMAGE_NAME:$CI_COMMIT_TAG"
export PUBLISHED_IMAGE_TAG=$CI_COMMIT_TAG
else
DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^main-$//')
KANIKO_D="$KANIKO_D -d $CR_PUBLIC_HOST/$CR_PUBLIC_ORG/$IMAGE_NAME:${DOCKER_TAG_NAME}latest"
KANIKO_D="$KANIKO_D -d $CR_PUBLIC_HOST/$CR_PUBLIC_ORG/$IMAGE_NAME:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA"
export PUBLISHED_IMAGE_TAG=$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA
fi
- "[ $DOCKERFILE ] && KANIKO_DOCKERFILE=\"--dockerfile $DOCKERFILE\""
- "BUILD_ARGS=$(printenv | sed -n 's/BUILD_ARG_/--build-arg=/p')"
- /kaniko/executor --context `pwd`/$CONTEXT $KANIKO_DOCKERFILE $KANIKO_D $BUILD_ARGS
- echo "PUBLISHED_IMAGE_TAG=$PUBLISHED_IMAGE_TAG" >> $CI_PROJECT_DIR/build.env
artifacts:
reports:
dotenv: build.env
# Theodolite Docs
.docs:
image: alpine/bundle:3.0.3
cache:
paths:
- docs/vendor
before_script:
- cd docs
- bundle config set --local path 'vendor'
- bundle install
rules:
- changes:
- docs/**/*
- when: manual
allow_failure: true
build-docs:
stage: build
extends: .docs
script: bundle exec jekyll build
artifacts:
paths:
- docs/_site
test-docs-links:
stage: test
extends: .docs
needs:
- build-docs
script: bundle exec htmlproofer --assume-extension --allow_hash_href --http-status-ignore 999 ./_site
build-docs-crds:
stage: build
image:
name: ghcr.io/fybrik/crdoc:0.6.1
entrypoint: [""]
script: /crdoc --resources theodolite/crd/ --template docs/api-reference/crds.tmpl --output docs/api-reference/crds.ref.md
artifacts:
paths:
- docs/api-reference/crds.ref.md
expire_in: 1 week
rules:
- changes:
- docs/api-reference/crds.tmpl
- theodolite/crd/**/*
- when: manual
allow_failure: true
test-docs-crds-regression:
stage: test
needs:
- build-docs-crds
image: alpine:3.15
before_script:
- cd docs
script:
- cmp api-reference/crds.md api-reference/crds.ref.md
artifacts:
when: on_failure
paths:
- docs/api-reference/crds.ref.md
expire_in: 1 week
# Theodolite Helm Chart
lint-helm:
stage: check
needs: []
image:
name: alpine/helm:3.5.2
entrypoint: [""]
script: helm lint helm/
rules:
- changes:
- helm/**/*
- when: manual
allow_failure: true
test-helm:
stage: smoketest
extends: .dind
needs:
- lint-helm
# - deploy-theodolite
image: ghcr.io/cau-se/theodolite-build-k3d-helm:20.10.12
variables:
CLUSTERNAME: "$CI_PROJECT_NAME-$CI_PIPELINE_ID"
cache:
paths:
- helm/charts
before_script:
- k3d help
- k3d version
#- k3d cluster create testgitlabci --agents 1 --wait -p "30000:30000@agent[0]"
- k3d cluster create $CLUSTERNAME --agents 1 --wait -p "30000:30000@agent:0" # k3d 5.0
# show cluster info
- kubectl cluster-info
- helm version
script:
# Display initial pods, etc.
- cd helm
- helm dependencies update .
- helm install theodolite . -f preconfigs/minimal.yaml --wait
- kubectl get nodes -o wide
- kubectl get pods --all-namespaces -o wide
- kubectl get services --all-namespaces -o wide
- helm test theodolite
after_script:
- k3d cluster delete $CLUSTERNAME
# Theodolite Benchmarks
.benchmarks:
image: openjdk:11-jdk
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
cache:
paths:
- .gradle/wrapper
- .gradle/caches
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
- cd theodolite-benchmarks
rules:
- changes:
- theodolite-benchmarks/**/*
- when: manual
allow_failure: true
build-benchmarks:
stage: build
extends: .benchmarks
script: ./gradlew --build-cache assemble
artifacts:
paths:
- "theodolite-benchmarks/build/libs/*.jar"
- "theodolite-benchmarks/*/build/libs/*.jar"
- "theodolite-benchmarks/*/build/distributions/*.tar"
expire_in: 6 hours
test-benchmarks:
stage: test
extends: .benchmarks
needs:
- build-benchmarks
script: ./gradlew test --continue
artifacts:
when: always
reports:
junit:
- "theodolite-benchmarks/**/build/test-results/test/TEST-*.xml"
checkstyle-benchmarks:
stage: check
extends: .benchmarks
needs:
- build-benchmarks
- test-benchmarks
script: ./gradlew checkstyle --continue
artifacts:
paths:
- "theodolite-benchmarks/*/build/reports/checkstyle/main.html"
when: on_failure
expire_in: 1 day
pmd-benchmarks:
stage: check
extends: .benchmarks
needs:
- build-benchmarks
- test-benchmarks
script: ./gradlew pmd --continue
artifacts:
paths:
- "theodolite-benchmarks/*/build/reports/pmd/*.html"
when: on_failure
expire_in: 1 day
spotbugs-benchmarks:
stage: check
extends: .benchmarks
needs:
- build-benchmarks
- test-benchmarks
script: ./gradlew spotbugs --continue
artifacts:
paths:
- "theodolite-benchmarks/*/build/reports/spotbugs/*.html"
when: on_failure
expire_in: 1 day
.deploy-benchmarks:
stage: deploy
extends:
- .benchmarks
- .kaniko-push
needs:
- build-benchmarks
- checkstyle-benchmarks
- pmd-benchmarks
- spotbugs-benchmarks
variables:
CONTEXT: "/$JAVA_PROJECT_NAME"
#before_script:
# - cd theodolite-benchmarks/$JAVA_PROJECT_NAME
rules:
- changes:
- theodolite-benchmarks/*
- theodolite-benchmarks/$JAVA_PROJECT_NAME/**/*
- theodolite-benchmarks/{commons,$JAVA_PROJECT_DEPS}/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $JAVA_PROJECT_DEPS"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME"
when: manual
allow_failure: true
deploy-uc1-kstreams:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-kstreams-app"
JAVA_PROJECT_NAME: "uc1-kstreams"
JAVA_PROJECT_DEPS: "kstreams-commons"
deploy-uc2-kstreams:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-kstreams-app"
JAVA_PROJECT_NAME: "uc2-kstreams"
JAVA_PROJECT_DEPS: "kstreams-commons"
deploy-uc3-kstreams:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-kstreams-app"
JAVA_PROJECT_NAME: "uc3-kstreams"
JAVA_PROJECT_DEPS: "kstreams-commons"
deploy-uc4-kstreams:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-kstreams-app"
JAVA_PROJECT_NAME: "uc4-kstreams"
JAVA_PROJECT_DEPS: "kstreams-commons"
deploy-uc1-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-flink"
JAVA_PROJECT_NAME: "uc1-flink"
JAVA_PROJECT_DEPS: "flink-commons"
deploy-uc2-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-flink"
JAVA_PROJECT_NAME: "uc2-flink"
JAVA_PROJECT_DEPS: "flink-commons"
deploy-uc3-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-flink"
JAVA_PROJECT_NAME: "uc3-flink"
JAVA_PROJECT_DEPS: "flink-commons"
deploy-uc4-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-flink"
JAVA_PROJECT_NAME: "uc4-flink"
JAVA_PROJECT_DEPS: "flink-commons"
deploy-uc1-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-hazelcastjet"
JAVA_PROJECT_NAME: "uc1-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc2-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-hazelcastjet"
JAVA_PROJECT_NAME: "uc2-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc3-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-hazelcastjet"
JAVA_PROJECT_NAME: "uc3-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc4-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-hazelcastjet"
JAVA_PROJECT_NAME: "uc4-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc1-beam-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-beam-flink"
JAVA_PROJECT_NAME: "uc1-beam-flink"
JAVA_PROJECT_DEPS: "beam-commons,uc1-beam"
deploy-uc2-beam-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-beam-flink"
JAVA_PROJECT_NAME: "uc2-beam-flink"
JAVA_PROJECT_DEPS: "beam-commons,uc2-beam"
deploy-uc3-beam-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-beam-flink"
JAVA_PROJECT_NAME: "uc3-beam-flink"
JAVA_PROJECT_DEPS: "beam-commons,uc3-beam"
deploy-uc4-beam-flink:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-beam-flink"
JAVA_PROJECT_NAME: "uc4-beam-flink"
JAVA_PROJECT_DEPS: "beam-commons,uc4-beam"
deploy-uc1-beam-samza:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-beam-samza"
JAVA_PROJECT_NAME: "uc1-beam-samza"
JAVA_PROJECT_DEPS: "beam-commons,uc1-beam"
deploy-uc2-beam-samza:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-beam-samza"
JAVA_PROJECT_NAME: "uc2-beam-samza"
JAVA_PROJECT_DEPS: "beam-commons,uc2-beam"
deploy-uc3-beam-samza:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-beam-samza"
JAVA_PROJECT_NAME: "uc3-beam-samza"
JAVA_PROJECT_DEPS: "beam-commons,uc3-beam"
deploy-uc4-beam-samza:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-beam-samza"
JAVA_PROJECT_NAME: "uc4-beam-samza"
JAVA_PROJECT_DEPS: "beam-commons,uc4-beam"
deploy-uc1-load-generator:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-workload-generator"
JAVA_PROJECT_NAME: "uc1-load-generator"
JAVA_PROJECT_DEPS: "load-generator-commons"
deploy-uc2-load-generator:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-workload-generator"
JAVA_PROJECT_NAME: "uc2-load-generator"
JAVA_PROJECT_DEPS: "load-generator-commons"
deploy-uc3-load-generator:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-workload-generator"
JAVA_PROJECT_NAME: "uc3-load-generator"
JAVA_PROJECT_DEPS: "load-generator-commons"
deploy-uc4-load-generator:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-workload-generator"
JAVA_PROJECT_NAME: "uc4-load-generator"
JAVA_PROJECT_DEPS: "load-generator-commons"
deploy-http-bridge:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-http-bridge"
JAVA_PROJECT_NAME: "http-bridge"
JAVA_PROJECT_DEPS: "load-generator-commons"
.smoketest-benchmarks:
stage: smoketest
extends:
- .dind
image: ghcr.io/cau-se/theodolite-build-docker-compose-jq:20.10.12
before_script:
- cd theodolite-benchmarks/docker-test
# variables:
# TEST_LOG_FILE: "test.log"
script:
- export THEODOLITE_TAG=$PUBLISHED_IMAGE_TAG
- ./smoketest-runner.sh ./$DOCKER_COMPOSE_DIR
# - cat test.log
after_script:
- cd ./$DOCKER_COMPOSE_DIR
- docker-compose down
rules:
- changes:
- theodolite-benchmarks/*
- theodolite-benchmarks/{$JAVA_PROJECT_DEPS}/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW && $DOCKER_COMPOSE_DIR && $JAVA_PROJECT_DEPS"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW && $DOCKER_COMPOSE_DIR && $JAVA_PROJECT_DEPS"
when: manual
allow_failure: true
smoketest-uc1-kstreams:
extends: .smoketest-benchmarks
needs:
- deploy-uc1-kstreams
- deploy-uc1-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc1-kstreams"
JAVA_PROJECT_DEPS: "uc1-kstreams,kstreams-commons,uc1-load-generator,load-generator-commons"
smoketest-uc1-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc1-flink
- deploy-uc1-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc1-flink"
JAVA_PROJECT_DEPS: "uc1-flink,flink-commons,uc1-load-generator,load-generator-commons"
smoketest-uc1-beam-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc1-beam-flink
- deploy-uc1-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc1-beam-flink"
JAVA_PROJECT_DEPS: "uc1-beam-flink,uc1-beam,beam-commons,uc1-load-generator,load-generator-commons"
smoketest-uc1-beam-samza:
extends: .smoketest-benchmarks
needs:
- deploy-uc1-beam-samza
- deploy-uc1-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc1-beam-samza"
JAVA_PROJECT_DEPS: "uc1-beam-samza,uc1-beam,beam-commons,uc1-load-generator,load-generator-commons"
smoketest-uc1-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc1-hazelcastjet
- deploy-uc1-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc1-hazelcastjet"
JAVA_PROJECT_DEPS: "uc1-hazelcastjet,hazelcastjet-commons,uc1-load-generator,load-generator-commons"
smoketest-uc2-kstreams:
extends: .smoketest-benchmarks
needs:
- deploy-uc2-kstreams
- deploy-uc2-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc2-kstreams"
JAVA_PROJECT_DEPS: "uc2-kstreams,kstreams-commons,uc2-load-generator,load-generator-commons"
smoketest-uc2-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc2-flink
- deploy-uc2-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc2-flink"
JAVA_PROJECT_DEPS: "uc2-flink,flink-commons,uc2-load-generator,load-generator-commons"
smoketest-uc2-beam-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc2-beam-flink
- deploy-uc2-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc2-beam-flink"
JAVA_PROJECT_DEPS: "uc2-beam-flink,uc2-beam,beam-commons,uc2-load-generator,load-generator-commons"
smoketest-uc2-beam-samza:
extends: .smoketest-benchmarks
needs:
- deploy-uc2-beam-samza
- deploy-uc2-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc2-beam-samza"
JAVA_PROJECT_DEPS: "uc2-beam-samza,uc2-beam,beam-commons,uc2-load-generator,load-generator-commons"
smoketest-uc2-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc2-hazelcastjet
- deploy-uc2-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc2-hazelcastjet"
JAVA_PROJECT_DEPS: "uc2-hazelcastjet,hazelcastjet-commons,uc2-load-generator,load-generator-commons"
smoketest-uc3-kstreams:
extends: .smoketest-benchmarks
needs:
- deploy-uc3-kstreams
- deploy-uc3-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc3-kstreams"
JAVA_PROJECT_DEPS: "uc3-kstreams,kstreams-commons,uc3-load-generator,load-generator-commons"
smoketest-uc3-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc3-flink
- deploy-uc3-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc3-flink"
JAVA_PROJECT_DEPS: "uc3-flink,flink-commons,uc3-load-generator,load-generator-commons"
smoketest-uc3-beam-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc3-beam-flink
- deploy-uc3-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc3-beam-flink"
JAVA_PROJECT_DEPS: "uc3-beam-flink,uc3-beam,beam-commons,uc3-load-generator,load-generator-commons"
smoketest-uc3-beam-samza:
extends: .smoketest-benchmarks
needs:
- deploy-uc3-beam-samza
- deploy-uc3-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc3-beam-samza"
JAVA_PROJECT_DEPS: "uc3-beam-samza,uc3-beam,beam-commons,uc3-load-generator,load-generator-commons"
smoketest-uc3-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc3-hazelcastjet
- deploy-uc3-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc3-hazelcastjet"
JAVA_PROJECT_DEPS: "uc3-hazelcastjet,hazelcastjet-commons,uc3-load-generator,load-generator-commons"
smoketest-uc4-kstreams:
extends: .smoketest-benchmarks
needs:
- deploy-uc4-kstreams
- deploy-uc4-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc4-kstreams"
JAVA_PROJECT_DEPS: "uc4-kstreams,kstreams-commons,uc4-load-generator,load-generator-commons"
smoketest-uc4-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc4-flink
- deploy-uc4-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc4-flink"
JAVA_PROJECT_DEPS: "uc4-flink,flink-commons,uc4-load-generator,load-generator-commons"
smoketest-uc4-beam-flink:
extends: .smoketest-benchmarks
needs:
- deploy-uc4-beam-flink
- deploy-uc4-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc4-beam-flink"
JAVA_PROJECT_DEPS: "uc4-beam-flink,uc4-beam,beam-commons,uc4-load-generator,load-generator-commons"
smoketest-uc4-beam-samza:
extends: .smoketest-benchmarks
needs:
- deploy-uc4-beam-samza
- deploy-uc4-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc4-beam-samza"
JAVA_PROJECT_DEPS: "uc4-beam-samza,uc4-beam,beam-commons,uc4-load-generator,load-generator-commons"
smoketest-uc4-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc4-hazelcastjet
- deploy-uc4-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc4-hazelcastjet"
JAVA_PROJECT_DEPS: "uc4-hazelcastjet,hazelcastjet-commons,uc4-load-generator,load-generator-commons"
# Theodolite Framework
.theodolite:
image:
name: ghcr.io/graalvm/native-image:java11-21.3.0
entrypoint: [""]
variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
cache:
paths:
- .gradle/wrapper
- .gradle/caches
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
- cd theodolite
rules:
- changes:
- theodolite/**/*
- when: manual
allow_failure: true
build-theodolite-jvm:
stage: build
extends: .theodolite
script: ./gradlew --build-cache assemble
artifacts:
paths:
- "theodolite/build/quarkus-app/lib/"
- "theodolite/build/quarkus-app/*.jar"
- "theodolite/build/quarkus-app/app/"
- "theodolite/build/quarkus-app/quarkus/"
expire_in: 6 hours
build-theodolite-native:
stage: build
extends: .theodolite
script:
- ./gradlew --build-cache assemble -Dquarkus.package.type=native
when: manual
artifacts:
paths:
- "theodolite/build/*-runner"
expire_in: 6 hours
test-theodolite:
stage: test
extends: .theodolite
needs:
- build-theodolite-jvm
#- build-theodolite-native
script: ./gradlew test --stacktrace
artifacts:
when: always
reports:
junit:
- "theodolite/**/build/test-results/test/TEST-*.xml"
# Disabled for now
.ktlint-theodolite:
stage: check
extends: .theodolite
needs:
- build-theodolite-jvm
- test-theodolite
script: ./gradlew ktlintCheck --continue
# Disabled for now
.detekt-theodolite:
stage: check
extends: .theodolite
needs:
- build-theodolite-jvm
- test-theodolite
script: ./gradlew detekt --continue
deploy-theodolite:
stage: deploy
extends:
- .theodolite
- .kaniko-push
needs:
#- build-theodolite-native
- build-theodolite-jvm
- test-theodolite
variables:
IMAGE_NAME: theodolite
DOCKERFILE: src/main/docker/Dockerfile.jvm
#DOCKERFILE: src/main/docker/Dockerfile.native
rules:
- changes:
- theodolite/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
when: manual
allow_failure: true
# Theodolite SLO Checker
test-slo-checker-lag-trend:
stage: test
needs: []
image: python:3.7-slim
before_script:
- cd slo-checker/record-lag
script:
- pip install -r requirements.txt
- cd app
- python -m unittest
rules:
- changes:
- slo-checker/record-lag/**/*
- when: manual
allow_failure: true
test-slo-checker-dropped-records-kstreams:
stage: test
needs: []
image: python:3.7-slim
before_script:
- cd slo-checker/dropped-records
script:
- pip install -r requirements.txt
- cd app
- python -m unittest
rules:
- changes:
- slo-checker/dropped-records/**/*
- when: manual
allow_failure: true
test-slo-checker-generic:
stage: test
needs: []
image: python:3.7-slim
before_script:
- cd slo-checker/generic
script:
- pip install -r requirements.txt
- cd app
- python -m unittest
rules:
- changes:
- slo-checker/generic/**/*
- when: manual
allow_failure: true
deploy-slo-checker-lag-trend:
stage: deploy
extends:
- .kaniko-push
needs:
- test-slo-checker-lag-trend
before_script:
- cd slo-checker/record-lag
variables:
IMAGE_NAME: theodolite-slo-checker-lag-trend
rules:
- changes:
- slo-checker/record-lag/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
when: manual
allow_failure: true
deploy-slo-checker-dropped-records-kstreams:
stage: deploy
extends:
- .kaniko-push
needs:
- test-slo-checker-dropped-records-kstreams
before_script:
- cd slo-checker/dropped-records
variables:
IMAGE_NAME: theodolite-slo-checker-dropped-records-kstreams
rules:
- changes:
- slo-checker/dropped-records/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
when: manual
allow_failure: true
deploy-slo-checker-generic:
stage: deploy
extends:
- .kaniko-push
needs:
- test-slo-checker-generic
before_script:
- cd slo-checker/generic
variables:
IMAGE_NAME: theodolite-slo-checker-generic
rules:
- changes:
- slo-checker/generic/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
when: manual
allow_failure: true
# Theodolite Random Scheduler
deploy-random-scheduler:
stage: deploy
extends:
- .kaniko-push
needs: []
before_script:
- cd execution/infrastructure/random-scheduler
variables:
IMAGE_NAME: theodolite-random-scheduler
rules:
- changes:
- execution/infrastructure/random-scheduler/**/*
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
when: manual
allow_failure: true
deploy-buildimage-docker-compose-jq:
stage: deploy
extends:
- .kaniko-push
needs: []
variables:
DOCKER_VERSION: 20.10.12
IMAGE_NAME: theodolite-build-docker-compose-jq
IMAGE_TAG: $DOCKER_VERSION
before_script:
- cd buildimages/docker-compose-jq
rules:
- changes:
- buildimages/docker-compose-jq/Dockerfile
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW && $CI_PIPELINE_SOURCE == 'web'"
when: manual
allow_failure: true
deploy-buildimage-k3d-helm:
stage: deploy
extends:
- .kaniko-push
needs: []
variables:
DOCKER_VERSION: 20.10.12
BUILD_ARG_DOCKER_VERSION: $DOCKER_VERSION
BUILD_ARG_KUBECTL: v1.21.3
IMAGE_NAME: theodolite-build-k3d-helm
IMAGE_TAG: $DOCKER_VERSION
before_script:
- cd buildimages/k3d-helm
rules:
- changes:
- buildimages/k3d-helm/Dockerfile
if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW"
- if: "$CR_PUBLIC_HOST && $CR_PUBLIC_ORG && $CR_PUBLIC_USER && $CR_PUBLIC_PW && $CI_PIPELINE_SOURCE == 'web'"
when: manual
allow_failure: true