From 8b3f4fef15d043cda4c3a5382ce91e43689da0fe Mon Sep 17 00:00:00 2001 From: Andon Andonov Date: Fri, 24 Sep 2021 12:11:36 +0300 Subject: [PATCH] control-service: Add vdk-heartbeat image As part of the the CI/CD process, we could benefit from having the vdk-heartbeat package built as a docker image. This change adds a dockerfile to facilitate building the vdk-heartbeat docker image when a new release of the Control Service is made. Testing Done: Built the image in docker locally and ran it to verify that it is being executed as expected. Signed-off-by: Andon Andonov --- projects/control-service/cicd/.gitlab-ci.yml | 26 +++++++++++++++++++ .../cicd/Dockerfile.vdk.heartbeat | 25 ++++++++++++++++++ .../control-service/cicd/start_heartbeat.sh | 11 ++++++++ .../cicd/vdk_heartbeat_config.ini | 11 ++++++++ 4 files changed, 73 insertions(+) create mode 100644 projects/control-service/cicd/Dockerfile.vdk.heartbeat create mode 100644 projects/control-service/cicd/start_heartbeat.sh create mode 100644 projects/control-service/cicd/vdk_heartbeat_config.ini diff --git a/projects/control-service/cicd/.gitlab-ci.yml b/projects/control-service/cicd/.gitlab-ci.yml index 99e8778bc4..7894ea9188 100644 --- a/projects/control-service/cicd/.gitlab-ci.yml +++ b/projects/control-service/cicd/.gitlab-ci.yml @@ -237,3 +237,29 @@ control_service_release: - main changes: - projects/control-service/projects/helm_charts/pipelines-control-service/version.txt + +control_service_vdk_heartbeat_release: + image: docker:19.03.8 + services: + - docker:19.03.8-dind + variables: + DOCKER_HOST: tcp://localhost:2375 + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + stage: release + script: + - export CHART_NAME=pipelines-control-service + - export CHART_VERSION=$(cat projects/control-service/projects/helm_charts/$CHART_NAME/version.txt) + - export VDK_HEARTBEAT_TEST_IMAGE_NAME=$CHART_NAME-integration-tests:0.0.1 + - docker login $VDK_DOCKER_REGISTRY_URL --username $VDK_DOCKER_REGISTRY_USERNAME --password $VDK_DOCKER_REGISTRY_PASSWORD + - cd projects/control-service/cicd + - docker build --tag $VDK_HEARTBEAT_TEST_IMAGE_NAME -f Dockerfile.vdk.heartbeat . + - docker push $VDK_HEARTBEAT_TEST_IMAGE_NAME + retry: !reference [.control_service_retry, retry_options] + only: + refs: + - external_pull_requests + - main + changes: + # - projects/control-service/projects/helm_charts/pipelines-control-service/version.txt + - projects/control-service/cicd/**/* diff --git a/projects/control-service/cicd/Dockerfile.vdk.heartbeat b/projects/control-service/cicd/Dockerfile.vdk.heartbeat new file mode 100644 index 0000000000..6f20564a07 --- /dev/null +++ b/projects/control-service/cicd/Dockerfile.vdk.heartbeat @@ -0,0 +1,25 @@ +# Install all required packages and prepare vdk heartbeat +FROM python:3.7-slim AS builder + +RUN apt-get update && \ + apt-get install -y --no-install-recommends build-essential gcc + +RUN python -m venv /opt/buildenv +ENV PATH="/opt/buildenv/bin:$PATH" + +RUN pip install -U pip wheel +RUN pip install vdk-heartbeat + + +# Prepare the release heartbeat +FROM python:3.7-slim + +COPY --from=builder /opt/buildenv /opt/buildenv +COPY vdk_heartbeat_config.ini heartbeat_config.ini +COPY start_heartbeat.sh . + +RUN ["chmod", "+x", "start_heartbeat.sh"] + +ENV PATH="/opt/buildenv/bin:$PATH" + +CMD ["./start_heartbeat.sh", "heartbeat_config.ini"] diff --git a/projects/control-service/cicd/start_heartbeat.sh b/projects/control-service/cicd/start_heartbeat.sh new file mode 100644 index 0000000000..3a1fcf25c8 --- /dev/null +++ b/projects/control-service/cicd/start_heartbeat.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Copyright 2021 VMware, Inc. +# SPDX-License-Identifier: Apache-2.0 + +VDK_HEARTBEAT_VDK_DISTRIBUTION_NAME=${VDK_HEARTBEAT_VDK_DISTRIBUTION_NAME:-'quickstart-vdk'} +VDK_HEARTBEAT_PIP_EXTRA_INDEX_URL=${VDK_HEARTBEAT_PIP_EXTRA_INDEX_URL:-'https://pypi.org/simple'} + +pip install -U $VDK_HEARTBEAT_VDK_DISTRIBUTION_NAME --extra-index-url $VDK_HEARTBEAT_PIP_EXTRA_INDEX_URL + +vdk-heartbeat -f $1 diff --git a/projects/control-service/cicd/vdk_heartbeat_config.ini b/projects/control-service/cicd/vdk_heartbeat_config.ini new file mode 100644 index 0000000000..6d53203424 --- /dev/null +++ b/projects/control-service/cicd/vdk_heartbeat_config.ini @@ -0,0 +1,11 @@ +[DEFAULT] +# Genereate with https://console-stg.cloud.vmware.com/csp/gateway/portal/#/user/tokens +# VDKCLI_OAUTH2_REFRESH_TOKEN= passed as environment variable + +JOB_RUN_TEST_MODULE_NAME=vdk.internal.heartbeat.simple_run_test +JOB_RUN_TEST_CLASS_NAME=SimpleRunTest +DATAJOB_DIRECTORY_NAME=simple + +VDK_COMMAND_NAME=vdk + +REPORT_JUNIT_XML_FILE_PATH=/reports/tests.xml