diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c3aaaf8b9a980835405c2db52f18872e4b780c6..cd21e130b7fd179d9fe24ef4f5b272af7efd7c0b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,8 +1,7 @@
 variables:
-    DOCKER_TAG: $CI_COMMIT_SHA
-    GOSDN_IMAGE: "${CI_REGISTRY_IMAGE}:${DOCKER_TAG}"
-    GOSDN_TESTING_IMAGE: "${CI_REGISTRY_IMAGE}:testing_${DOCKER_TAG}"
-    GOSDN_INTEGRATION_TEST_IMAGE: "${CI_REGISTRY_IMAGE}/integration-tests:${DOCKER_TAG}"
+    GOSDN_IMAGE: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}"
+    GOSDN_TESTING_IMAGE: "${CI_REGISTRY_IMAGE}:testing_${CI_COMMIT_SHA}"
+    GOSDN_INTEGRATION_TEST_IMAGE: "${CI_REGISTRY_IMAGE}/integration-tests:${CI_COMMIT_SHA}"
     CEOS_IMAGE: "${CI_PCONTAINERS_REGISTRY_IMAGE}/ceos:4.28.2F"
     GOLANG_VERSION: "1.22"
     GNMI_TARGET_IMAGE: registry.code.fbi.h-da.de/danet/gnmi-target/debian:master
@@ -22,6 +21,7 @@ stages:
     - test
     - analyze
     - test-legacy
+    - release
     - deploy
     - .post
 
@@ -34,3 +34,4 @@ include:
     - local: "/.gitlab/ci/.renovate.yml"
     - local: "/.gitlab/ci/.mk-docs-deploy.yml"
     - local: "/.gitlab/ci/legacy/.test.yml"
+    - local: "/.gitlab/ci/.release-container.yml"
diff --git a/.gitlab/ci/.build-container-images.yml b/.gitlab/ci/.build-container-images.yml
index 04cbec4a79124bd37c54abe0d4ed231a61a142e8..7e23a663784c5cdfb64e0fe986cac0b7d52b8a51 100644
--- a/.gitlab/ci/.build-container-images.yml
+++ b/.gitlab/ci/.build-container-images.yml
@@ -4,8 +4,6 @@
     services:
         - name: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest
           alias: docker
-    variables:
-      DOCKER_TLS_CERTDIR: "/certs"
     before_script:
       - apk add git
       - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
@@ -19,8 +17,6 @@
     services:
         - name: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest
           alias: docker
-    variables:
-      DOCKER_TLS_CERTDIR: "/certs"
     before_script:
       - apk add git
       - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
@@ -28,36 +24,46 @@
 
 build-controller-image:
     script:
-        - docker buildx build -t "$CI_REGISTRY_IMAGE:$DOCKER_TAG" -f "${CI_PROJECT_DIR}/controller/controller.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
-        - docker push "$CI_REGISTRY_IMAGE:$DOCKER_TAG"
+        - docker buildx build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA" -f "${CI_PROJECT_DIR}/controller/controller.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA"
+        - docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA" "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
+        - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
     <<: *build
 
 build-cli-image:
     script:
         - CLI_IMAGE_NAME="${CI_REGISTRY_IMAGE}/gosdnc"
-        - docker buildx build -t "$CLI_IMAGE_NAME:$DOCKER_TAG" -f "${CI_PROJECT_DIR}/cli/cli.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
-        - docker push "$CLI_IMAGE_NAME:$DOCKER_TAG"
+        - docker buildx build -t "$CLI_IMAGE_NAME:$CI_COMMIT_SHA" -f "${CI_PROJECT_DIR}/cli/cli.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$CLI_IMAGE_NAME:$CI_COMMIT_SHA"
+        - docker tag "$CLI_IMAGE_NAME:$CI_COMMIT_SHA" "$CLI_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
+        - docker push "$CLI_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
     <<: *build
 
 build-venv-manager-image:
     script:
         - VENV_MANAGER_IMAGE_NAME="${CI_REGISTRY_IMAGE}/venv-manager"
-        - docker buildx build -t "$VENV_MANAGER_IMAGE_NAME:$DOCKER_TAG" -f "${CI_PROJECT_DIR}/applications/venv-manager/venv-manager.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
-        - docker push "$VENV_MANAGER_IMAGE_NAME:$DOCKER_TAG"
+        - docker buildx build -t "$VENV_MANAGER_IMAGE_NAME:$CI_COMMIT_SHA" -f "${CI_PROJECT_DIR}/applications/venv-manager/venv-manager.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$VENV_MANAGER_IMAGE_NAME:$CI_COMMIT_SHA"
+        - docker tag "$VENV_MANAGER_IMAGE_NAME:$CI_COMMIT_SHA" "$VENV_MANAGER_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
+        - docker push "$VENV_MANAGER_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
     <<: *build
 
 build-arista-routing-engine-image:
     script:
         - ARISTA_ROUTING_ENGINE_IMAGE_NAME="${CI_REGISTRY_IMAGE}/arista-routing-engine"
-        - docker buildx build -t "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$DOCKER_TAG" -f "${CI_PROJECT_DIR}/applications/arista-routing-engine/arista-routing-engine.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
-        - docker push "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$DOCKER_TAG"
+        - docker buildx build -t "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$CI_COMMIT_SHA" -f "${CI_PROJECT_DIR}/applications/arista-routing-engine/arista-routing-engine.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$CI_COMMIT_SHA"
+        - docker tag "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$CI_COMMIT_SHA" "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
+        - docker push "$ARISTA_ROUTING_ENGINE_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
     <<: *build
 
 build-plugin-registry-image:
     script:
         - PLUGIN_REGISTRY_IMAGE_NAME="${CI_REGISTRY_IMAGE}/plugin-registry"
-        - docker buildx build -t "$PLUGIN_REGISTRY_IMAGE_NAME:$DOCKER_TAG" -f "${CI_PROJECT_DIR}/plugin-registry/plugin-registry.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
-        - docker push "$PLUGIN_REGISTRY_IMAGE_NAME:$DOCKER_TAG"
+        - docker buildx build -t "$PLUGIN_REGISTRY_IMAGE_NAME:$CI_COMMIT_SHA" -f "${CI_PROJECT_DIR}/plugin-registry/plugin-registry.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$PLUGIN_REGISTRY_IMAGE_NAME:$CI_COMMIT_SHA"
+        - docker tag "$PLUGIN_REGISTRY_IMAGE_NAME:$CI_COMMIT_SHA" "$PLUGIN_REGISTRY_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
+        - docker push "$PLUGIN_REGISTRY_IMAGE_NAME:$CI_COMMIT_REF_SLUG"
     <<: *build
 
 build-integration-test-images:
@@ -67,11 +73,11 @@ build-integration-test-images:
         - apk add openssl make
         - make generate-certs
         # Build gosdn with ssl certificates
-        - docker buildx build -t "$CI_REGISTRY_IMAGE:${DOCKER_TAG}_integration-test" -f "${CI_PROJECT_DIR}/.gitlab/ci/gosdn-integration.Dockerfile" --build-arg "GOSDN_IMAGE=$CI_REGISTRY_IMAGE:${DOCKER_TAG}" .
+        - docker buildx build -t "$CI_REGISTRY_IMAGE:${CI_COMMIT_SHA}_integration-test" -f "${CI_PROJECT_DIR}/.gitlab/ci/gosdn-integration.Dockerfile" --build-arg "GOSDN_IMAGE=$CI_REGISTRY_IMAGE:${CI_COMMIT_SHA}" .
         # Update gnmi-target with ssl certificates
         - docker buildx build -t $GNMI_TARGET_INTEGRATION_IMAGE -f "${CI_PROJECT_DIR}/.gitlab/ci/gnmi-cert-integration.Dockerfile" --build-arg "GNMI_TARGET_IMAGE=${GNMI_TARGET_IMAGE}" .
         # Push images
-        - docker push "$CI_REGISTRY_IMAGE:${DOCKER_TAG}_integration-test"
+        - docker push "$CI_REGISTRY_IMAGE:${CI_COMMIT_SHA}_integration-test"
         - docker push $GNMI_TARGET_INTEGRATION_IMAGE
     artifacts:
       paths:
diff --git a/.gitlab/ci/.release-container.yml b/.gitlab/ci/.release-container.yml
new file mode 100644
index 0000000000000000000000000000000000000000..12747cbf1d73122d7dbc9bd19f963c6b95f5bfb8
--- /dev/null
+++ b/.gitlab/ci/.release-container.yml
@@ -0,0 +1,51 @@
+.release: &release
+    stage: release
+    image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest
+    services:
+        - name: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest
+          alias: docker
+    variables:
+      RELEASE_DOCKER_TAG: $CI_COMMIT_REF_SLUG
+    before_script:
+      - apk add git
+      - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+      - docker login -u $CI_DEPENDENCY_PROXY_USER -p $CI_DEPENDENCY_PROXY_PASSWORD $CI_DEPENDENCY_PROXY_SERVER
+    needs: []
+    only:
+      - tags
+
+release-controller-image:
+    script:
+        - CONTROLLER_IMAGE_NAME="${CI_REGISTRY_IMAGE}"
+        - docker buildx build -t "${CONTROLLER_IMAGE_NAME}:${RELEASE_DOCKER_TAG}" -f "${CI_PROJECT_DIR}/controller/controller.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "${CONTROLLER_IMAGE_NAME}:${RELEASE_DOCKER_TAG}"
+        - docker tag "${CONTROLLER_IMAGE_NAME}:${RELEASE_DOCKER_TAG}" "${CONTROLLER_IMAGE_NAME}:latest"
+        - docker push "${CONTROLLER_IMAGE_NAME}:latest"
+    <<: *release
+
+release-cli-image:
+    script:
+        - CLI_IMAGE_NAME="${CI_REGISTRY_IMAGE}/gosdnc"
+        - docker buildx build -t "$CLI_IMAGE_NAME:$RELEASE_DOCKER_TAG" -f "${CI_PROJECT_DIR}/cli/cli.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "BUILDARGS=$BUILDARGS" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$CLI_IMAGE_NAME:$RELEASE_DOCKER_TAG"
+        - docker tag "$CLI_IMAGE_NAME:$RELEASE_DOCKER_TAG" "$CLI_IMAGE_NAME:latest"
+        - docker push "$CLI_IMAGE_NAME:latest"
+    <<: *release
+
+release-venv-manager-image:
+    script:
+        - VENV_MANAGER_IMAGE_NAME="${CI_REGISTRY_IMAGE}/venv-manager"
+        - docker buildx build -t "$VENV_MANAGER_IMAGE_NAME:$RELEASE_DOCKER_TAG" -f "${CI_PROJECT_DIR}/applications/venv-manager/venv-manager.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$VENV_MANAGER_IMAGE_NAME:$RELEASE_DOCKER_TAG"
+        - docker tag "$VENV_MANAGER_IMAGE_NAME:$RELEASE_DOCKER_TAG" "$VENV_MANAGER_IMAGE_NAME:latest"
+        - docker push "$VENV_MANAGER_IMAGE_NAME:latest"
+    <<: *release
+
+release-plugin-registry-image:
+    script:
+        - PLUGIN_REGISTRY_IMAGE_NAME="${CI_REGISTRY_IMAGE}/plugin-registry"
+        - docker buildx build -t "$PLUGIN_REGISTRY_IMAGE_NAME:$RELEASE_DOCKER_TAG" -f "${CI_PROJECT_DIR}/plugin-registry/plugin-registry.Dockerfile" --build-arg "GOLANG_VERSION=$GOLANG_VERSION" --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" .
+        - docker push "$PLUGIN_REGISTRY_IMAGE_NAME:$RELEASE_DOCKER_TAG"
+        - docker tag "$PLUGIN_REGISTRY_IMAGE_NAME:$RELEASE_DOCKER_TAG" "$PLUGIN_REGISTRY_IMAGE_NAME:latest"
+        - docker push "$PLUGIN_REGISTRY_IMAGE_NAME:latest"
+    <<: *release
diff --git a/.gitlab/ci/.test.yml b/.gitlab/ci/.test.yml
index 20cd508b90897386d1e38cbbc9f85faba30ca929..99ea33631f607a038a048980053d81213e401721 100644
--- a/.gitlab/ci/.test.yml
+++ b/.gitlab/ci/.test.yml
@@ -20,7 +20,7 @@ integration-test-gosdn:
         alias: rabbitmq
         variables:
           HEALTHCHECK_TCP_PORT: "5672"
-      - name: ${CI_REGISTRY_IMAGE}/plugin-registry:${DOCKER_TAG}
+      - name: ${CI_REGISTRY_IMAGE}/plugin-registry:${CI_COMMIT_SHA}
         alias: plugin-registry
       - name: $GNMI_TARGET_INTEGRATION_IMAGE
         alias: gnmi-target_A
@@ -29,7 +29,7 @@ integration-test-gosdn:
         alias: gnmi-target_B
         command: ["start", "--cert", "/etc/gnmi-target/ssl/certs/gnmi-target-selfsigned.crt", "--key", "/etc/gnmi-target/ssl/private/gnmi-target-selfsigned.key", "--ca_file", "/etc/gnmi-target/ssl/ca.crt"]
       # Use gosdn docker image from this branch
-      - name: "${CI_REGISTRY_IMAGE}:${DOCKER_TAG}_integration-test"
+      - name: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_SHA}_integration-test"
         alias: gosdn
         variables:
           GOSDN_ADMIN_PASSWORD: TestPassword
diff --git a/.gitlab/ci/scripts/docker_host_port b/.gitlab/ci/scripts/docker_host_port
deleted file mode 100755
index 42ac183f4263c80e1120884b524233952b05e229..0000000000000000000000000000000000000000
--- a/.gitlab/ci/scripts/docker_host_port
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-TEMPLATE="{{ (index (index .NetworkSettings.Ports \"${1}/tcp\") 0).HostPort }}"
-docker inspect -f "${TEMPLATE}" ${2}
diff --git a/.gitlab/ci/scripts/generate_octet.py b/.gitlab/ci/scripts/generate_octet.py
deleted file mode 100755
index a0005706c869f2e5b2c63e9c8ff3ed508d86e73e..0000000000000000000000000000000000000000
--- a/.gitlab/ci/scripts/generate_octet.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import sys
-from hashlib import sha256
-
-input_data = sys.argv[1]
-
-# Hash input and store it as string
-hashed_string = sha256(bytes(input_data, encoding='utf8')).hexdigest()
-
-final_string = ""
-
-# Iterate over hash and take out all chars that are a number
-for character in hashed_string:
-    if character.isdigit():
-        final_string += character
-
-final_int = int(final_string)
-
-# Print number mod 256 to get a number between 0 and 255 for ip adress
-print(final_int % 256)
diff --git a/.gitlab/ci/scripts/wait-for-it.sh b/.gitlab/ci/scripts/wait-for-it.sh
deleted file mode 100755
index d990e0d364f576ee83cd699707076ca49ad36a4d..0000000000000000000000000000000000000000
--- a/.gitlab/ci/scripts/wait-for-it.sh
+++ /dev/null
@@ -1,182 +0,0 @@
-#!/usr/bin/env bash
-# Use this script to test if a given TCP host/port are available
-
-WAITFORIT_cmdname=${0##*/}
-
-echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
-
-usage()
-{
-    cat << USAGE >&2
-Usage:
-    $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
-    -h HOST | --host=HOST       Host or IP under test
-    -p PORT | --port=PORT       TCP port under test
-                                Alternatively, you specify the host and port as host:port
-    -s | --strict               Only execute subcommand if the test succeeds
-    -q | --quiet                Don't output any status messages
-    -t TIMEOUT | --timeout=TIMEOUT
-                                Timeout in seconds, zero for no timeout
-    -- COMMAND ARGS             Execute command with args after the test finishes
-USAGE
-    exit 1
-}
-
-wait_for()
-{
-    if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
-        echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
-    else
-        echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
-    fi
-    WAITFORIT_start_ts=$(date +%s)
-    while :
-    do
-        if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
-            nc -z $WAITFORIT_HOST $WAITFORIT_PORT
-            WAITFORIT_result=$?
-        else
-            (echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
-            WAITFORIT_result=$?
-        fi
-        if [[ $WAITFORIT_result -eq 0 ]]; then
-            WAITFORIT_end_ts=$(date +%s)
-            echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
-            break
-        fi
-        sleep 1
-    done
-    return $WAITFORIT_result
-}
-
-wait_for_wrapper()
-{
-    # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
-    if [[ $WAITFORIT_QUIET -eq 1 ]]; then
-        timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
-    else
-        timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
-    fi
-    WAITFORIT_PID=$!
-    trap "kill -INT -$WAITFORIT_PID" INT
-    wait $WAITFORIT_PID
-    WAITFORIT_RESULT=$?
-    if [[ $WAITFORIT_RESULT -ne 0 ]]; then
-        echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
-    fi
-    return $WAITFORIT_RESULT
-}
-
-# process arguments
-while [[ $# -gt 0 ]]
-do
-    case "$1" in
-        *:* )
-        WAITFORIT_hostport=(${1//:/ })
-        WAITFORIT_HOST=${WAITFORIT_hostport[0]}
-        WAITFORIT_PORT=${WAITFORIT_hostport[1]}
-        shift 1
-        ;;
-        --child)
-        WAITFORIT_CHILD=1
-        shift 1
-        ;;
-        -q | --quiet)
-        WAITFORIT_QUIET=1
-        shift 1
-        ;;
-        -s | --strict)
-        WAITFORIT_STRICT=1
-        shift 1
-        ;;
-        -h)
-        WAITFORIT_HOST="$2"
-        if [[ $WAITFORIT_HOST == "" ]]; then break; fi
-        shift 2
-        ;;
-        --host=*)
-        WAITFORIT_HOST="${1#*=}"
-        shift 1
-        ;;
-        -p)
-        WAITFORIT_PORT="$2"
-        if [[ $WAITFORIT_PORT == "" ]]; then break; fi
-        shift 2
-        ;;
-        --port=*)
-        WAITFORIT_PORT="${1#*=}"
-        shift 1
-        ;;
-        -t)
-        WAITFORIT_TIMEOUT="$2"
-        if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
-        shift 2
-        ;;
-        --timeout=*)
-        WAITFORIT_TIMEOUT="${1#*=}"
-        shift 1
-        ;;
-        --)
-        shift
-        WAITFORIT_CLI=("$@")
-        break
-        ;;
-        --help)
-        usage
-        ;;
-        *)
-        echoerr "Unknown argument: $1"
-        usage
-        ;;
-    esac
-done
-
-if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
-    echoerr "Error: you need to provide a host and port to test."
-    usage
-fi
-
-WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
-WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
-WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
-WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
-
-# Check to see if timeout is from busybox?
-WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
-WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
-
-WAITFORIT_BUSYTIMEFLAG=""
-if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
-    WAITFORIT_ISBUSY=1
-    # Check if busybox timeout uses -t flag
-    # (recent Alpine versions don't support -t anymore)
-    if timeout &>/dev/stdout | grep -q -e '-t '; then
-        WAITFORIT_BUSYTIMEFLAG="-t"
-    fi
-else
-    WAITFORIT_ISBUSY=0
-fi
-
-if [[ $WAITFORIT_CHILD -gt 0 ]]; then
-    wait_for
-    WAITFORIT_RESULT=$?
-    exit $WAITFORIT_RESULT
-else
-    if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
-        wait_for_wrapper
-        WAITFORIT_RESULT=$?
-    else
-        wait_for
-        WAITFORIT_RESULT=$?
-    fi
-fi
-
-if [[ $WAITFORIT_CLI != "" ]]; then
-    if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
-        echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
-        exit $WAITFORIT_RESULT
-    fi
-    exec "${WAITFORIT_CLI[@]}"
-else
-    exit $WAITFORIT_RESULT
-fi
diff --git a/csbi/build/ci/.build-container.yml b/csbi/build/ci/.build-container.yml
index fffce63f2342356baf45f445434523c33ac32244..1e229f0c16f0db8e536e9a2ab03aac872119f03d 100644
--- a/csbi/build/ci/.build-container.yml
+++ b/csbi/build/ci/.build-container.yml
@@ -1,6 +1,3 @@
-variables:
-  DOCKER_TLS_CERTDIR: "/certs"
-
 build-docker:
   before_script:
     - echo "override global before script"