1
0
mirror of https://github.com/toradex/rt-validation.git synced 2025-05-04 22:16:19 +00:00

Add GitLab CI script

The GitLab CI script will automatically build the containers (with
multiarch support) and push to GitLab local registry.

Manual jobs will be available to push the containers to Docker hub.

Signed-off-by: Sergio Prado <sergio.prado@toradex.com>
This commit is contained in:
Sergio Prado 2020-12-08 10:35:05 -03:00
parent 25be3a08a2
commit 720e987df8

493
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,493 @@
image: docker:latest
variables:
IMAGE_TAG_DEBIAN: "2-bullseye"
RT_TESTS_MAJOR: "2"
RT_TESTS_MINOR: "0"
RT_TESTS_PATCH: "0"
STRESS_TESTS_MAJOR: "2"
STRESS_TESTS_MINOR: "0"
STRESS_TESTS_PATCH: "0"
# This should be set by docker image already, just to be sure...
DOCKER_HOST: tcp://docker:2375
# Use overlayfs driver for better performance
DOCKER_TLS_CERTDIR: ""
DOCKER_DRIVER: overlay2
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
GITLAB_DOCKERREGISTRY_SUFFIX: ${CI_COMMIT_REF_SLUG}-${CI_PIPELINE_ID}
GITLAB_DOCKERREGISTRY_SUFFIX_LATEST: ${CI_COMMIT_REF_SLUG}-latest
services:
- name: docker:dind
before_script:
- docker info
stages:
- build-rt-tests
- build-rt-tests-multiarch
- deploy-major
- deploy-minor
- deploy-patch
- deploy-patch-date
- deploy-multiarch-major
- deploy-multiarch-minor
- deploy-multiarch-patch
- deploy-multiarch-patch-date
# Docker image builds
#
# Build the Docker images specified in DOCKERFILE_FOLDER/IMAGE_NAME and push
# it to Gitlab's internal Docker registry
.docker-build:
variables:
IMAGE_ARCH: linux/arm
script:
# Try to download latest image for cache, but don't fail if it does not exist
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST} || true
- export DATE=$(date +%Y%m%d)
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build --build-arg IMAGE_TAG=${IMAGE_TAG}
--build-arg IMAGE_ARCH=${IMAGE_ARCH}
--cache-from ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST}
${DOCKER_NO_CACHE:+--no-cache}
--label container.name=${IMAGE_NAME}
--label container.version=${MAJOR}.${MINOR}.${PATCH}-${DATE}
--label git.branch=${CI_COMMIT_BRANCH}
--label git.hash=${CI_COMMIT_SHA}
--label pipeline.id=${CI_PIPELINE_ID}
-f ${DOCKERFILE_FOLDER}Dockerfile
-t ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX}
-t ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST}
${DOCKERFILE_FOLDER}
- docker push ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker push ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST}
docker-build-rt-tests:
extends: .docker-build
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_TAG: ${IMAGE_TAG_DEBIAN}
IMAGE_NAME: arm32v7-rt-tests
DOCKERFILE_FOLDER: "./rt-tests/"
DOCKER_NO_CACHE: ${DOCKER_NO_CACHE_FEEDS}
stage: build-rt-tests
docker-build-stress-tests:
extends: .docker-build
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_TAG: ${IMAGE_TAG_DEBIAN}
IMAGE_NAME: arm32v7-stress-tests
DOCKERFILE_FOLDER: "./stress-tests/"
DOCKER_NO_CACHE: ${DOCKER_NO_CACHE_FEEDS}
stage: build-rt-tests
docker-build-rt-tests-arm64:
extends: .docker-build
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_ARCH: linux/arm64
IMAGE_TAG: ${IMAGE_TAG_DEBIAN}
IMAGE_NAME: arm64v8-rt-tests
DOCKERFILE_FOLDER: "./rt-tests/"
DOCKER_NO_CACHE: ${DOCKER_NO_CACHE_FEEDS}
stage: build-rt-tests
docker-build-stress-tests-arm64:
extends: .docker-build
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_ARCH: linux/arm64
IMAGE_TAG: ${IMAGE_TAG_DEBIAN}
IMAGE_NAME: arm64v8-stress-tests
DOCKERFILE_FOLDER: "./stress-tests/"
DOCKER_NO_CACHE: ${DOCKER_NO_CACHE_FEEDS}
stage: build-rt-tests
# Enable experimental features in Docker client (experimental feature are needed for manifest)
.do_docker_experimental: &do_docker_experimental
- mkdir -p $HOME/.docker
- "echo -e '{\n \"experimental\": \"enabled\"\n}' | tee $HOME/.docker/config.json"
- docker version
.docker-build-multiarch:
before_script:
- *do_docker_experimental
- rm -rf ~/.docker/manifests/*
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME_32}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME_64}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker manifest create ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST} ${CI_REGISTRY_IMAGE}/${IMAGE_NAME_32}:${GITLAB_DOCKERREGISTRY_SUFFIX} ${CI_REGISTRY_IMAGE}/${IMAGE_NAME_64}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker manifest annotate ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST} ${CI_REGISTRY_IMAGE}/${IMAGE_NAME_32}:${GITLAB_DOCKERREGISTRY_SUFFIX} --os linux --arch arm
- docker manifest annotate ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST} ${CI_REGISTRY_IMAGE}/${IMAGE_NAME_64}:${GITLAB_DOCKERREGISTRY_SUFFIX} --os linux --arch arm64
- docker manifest inspect -v ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST}
- docker manifest push ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX_LATEST}
docker-build-rt-tests-multiarch:
extends: .docker-build-multiarch
variables:
IMAGE_NAME: rt-tests
IMAGE_NAME_32: arm32v7-rt-tests
IMAGE_NAME_64: arm64v8-rt-tests
stage: build-rt-tests-multiarch
docker-build-stress-tests-multiarch:
extends: .docker-build-multiarch
variables:
IMAGE_NAME: stress-tests
IMAGE_NAME_32: arm32v7-stress-tests
IMAGE_NAME_64: arm64v8-stress-tests
stage: build-rt-tests-multiarch
# Docker deploy jobs
#
# Make sure DOCKER_HUB_USER/DOCKER_HUB_PW is properly set in the project
# specific Gitlab CI settings.
.docker-deploy-major:
when: manual
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker tag ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- docker push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}
docker-deploy-rt-tests-major:
extends: .docker-deploy-major
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
variables:
IMAGE_NAME: arm32v7-rt-tests
stage: deploy-major
docker-deploy-stress-tests-major:
extends: .docker-deploy-major
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
variables:
IMAGE_NAME: arm32v7-stress-tests
stage: deploy-major
docker-deploy-rt-tests-arm64-major:
extends: .docker-deploy-major
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
variables:
IMAGE_NAME: arm64v8-rt-tests
stage: deploy-major
docker-deploy-stress-tests-arm64-major:
extends: .docker-deploy-major
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
variables:
IMAGE_NAME: arm64v8-stress-tests
stage: deploy-major
.docker-deploy-minor:
when: manual
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker tag ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- docker push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}
docker-deploy-rt-tests-minor:
extends: .docker-deploy-minor
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
variables:
IMAGE_NAME: arm32v7-rt-tests
stage: deploy-minor
docker-deploy-stress-tests-minor:
extends: .docker-deploy-minor
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
variables:
IMAGE_NAME: arm32v7-stress-tests
stage: deploy-minor
docker-deploy-rt-tests-arm64-minor:
extends: .docker-deploy-minor
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
variables:
IMAGE_NAME: arm64v8-rt-tests
stage: deploy-minor
docker-deploy-stress-tests-arm64-minor:
extends: .docker-deploy-minor
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
variables:
IMAGE_NAME: arm64v8-stress-tests
stage: deploy-minor
.docker-deploy-patch:
when: manual
script:
- *do_docker_experimental
- docker manifest inspect ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH} > /dev/null && true; RESULT=$?
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker tag ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- (if [ ${RESULT} == 1 ] ; then docker push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME} ; else echo Image with this tag already exists. ; fi)
docker-deploy-rt-tests-patch:
extends: .docker-deploy-patch
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_NAME: arm32v7-rt-tests
stage: deploy-patch
docker-deploy-stress-tests-patch:
extends: .docker-deploy-patch
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_NAME: arm32v7-stress-tests
stage: deploy-patch
docker-deploy-rt-tests-arm64-patch:
extends: .docker-deploy-patch
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_NAME: arm64v8-rt-tests
stage: deploy-patch
docker-deploy-stress-tests-arm64-patch:
extends: .docker-deploy-patch
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_NAME: arm64v8-stress-tests
stage: deploy-patch
.docker-deploy-patch-date:
when: manual
script:
- *do_docker_experimental
- export DATE=$(date +%Y%m%d)
- docker manifest inspect ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE} > /dev/null && true; RESULT=$?
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX}
- docker tag ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${GITLAB_DOCKERREGISTRY_SUFFIX} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE}
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- (if [ ${RESULT} == 1 ] ; then docker push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME} ; else echo Image with this tag already exists. ; fi)
docker-deploy-rt-tests-patch-date:
extends: .docker-deploy-patch-date
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_NAME: arm32v7-rt-tests
stage: deploy-patch-date
docker-deploy-stress-tests-patch-date:
extends: .docker-deploy-patch-date
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_NAME: arm32v7-stress-tests
stage: deploy-patch-date
docker-deploy-rt-tests-arm64-patch-date:
extends: .docker-deploy-patch-date
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_NAME: arm64v8-rt-tests
stage: deploy-patch-date
docker-deploy-stress-tests-arm64-patch-date:
extends: .docker-deploy-patch-date
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_NAME: arm64v8-stress-tests
stage: deploy-patch-date
.docker-deploy-multiarch-major:
when: manual
script:
- *do_docker_experimental
- rm -rf ~/.docker/manifests/*
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- docker manifest create ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR} --os linux --arch arm
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR} --os linux --arch arm64
- docker manifest inspect -v ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}
- docker manifest push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}
docker-deploy-rt-tests-multiarch-major:
extends: .docker-deploy-multiarch-major
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
variables:
IMAGE_NAME: rt-tests
IMAGE_NAME_32: arm32v7-rt-tests
IMAGE_NAME_64: arm64v8-rt-tests
stage: deploy-multiarch-major
docker-deploy-stress-tests-multiarch-major:
extends: .docker-deploy-multiarch-major
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
variables:
IMAGE_NAME: stress-tests
IMAGE_NAME_32: arm32v7-stress-tests
IMAGE_NAME_64: arm64v8-stress-tests
stage: deploy-multiarch-major
.docker-deploy-multiarch-minor:
when: manual
script:
- *do_docker_experimental
- rm -rf ~/.docker/manifests/*
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- docker manifest create ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR}.${MINOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}.${MINOR}
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR}.${MINOR} --os linux --arch arm
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}.${MINOR} --os linux --arch arm64
- docker manifest inspect -v ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}
- docker manifest push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}
docker-deploy-rt-tests-multiarch-minor:
extends: .docker-deploy-multiarch-minor
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
variables:
IMAGE_NAME: rt-tests
IMAGE_NAME_32: arm32v7-rt-tests
IMAGE_NAME_64: arm64v8-rt-tests
stage: deploy-multiarch-minor
docker-deploy-stress-tests-multiarch-minor:
extends: .docker-deploy-multiarch-minor
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
variables:
IMAGE_NAME: stress-tests
IMAGE_NAME_32: arm32v7-stress-tests
IMAGE_NAME_64: arm64v8-stress-tests
stage: deploy-multiarch-minor
.docker-deploy-multiarch-patch:
when: manual
script:
- *do_docker_experimental
- rm -rf ~/.docker/manifests/*
- docker manifest inspect ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH} > /dev/null && true; RESULT=$?
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- docker manifest create ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR}.${MINOR}.${PATCH} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}.${MINOR}.${PATCH}
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR}.${MINOR}.${PATCH} --os linux --arch arm
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}.${MINOR}.${PATCH} --os linux --arch arm64
- docker manifest inspect -v ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}
- (if [ ${RESULT} == 1 ] ; then docker manifest push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH} ; else echo Image with this tag already exists. ; fi)
docker-deploy-rt-tests-multiarch-patch:
extends: .docker-deploy-multiarch-patch
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_NAME: rt-tests
IMAGE_NAME_32: arm32v7-rt-tests
IMAGE_NAME_64: arm64v8-rt-tests
stage: deploy-multiarch-patch
docker-deploy-stress-tests-multiarch-patch:
extends: .docker-deploy-multiarch-patch
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_NAME: stress-tests
IMAGE_NAME_32: arm32v7-stress-tests
IMAGE_NAME_64: arm64v8-stress-tests
stage: deploy-multiarch-patch
.docker-deploy-multiarch-patch-date:
when: manual
script:
- *do_docker_experimental
- rm -rf ~/.docker/manifests/*
- export DATE=$(date +%Y%m%d)
- docker manifest inspect ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE} > /dev/null && true; RESULT=$?
- docker login -u $DOCKER_HUB_USER -p $DOCKER_HUB_PW
- docker manifest create ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR}.${MINOR}.${PATCH}-${DATE} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}.${MINOR}.${PATCH}-${DATE}
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_32}:${MAJOR}.${MINOR}.${PATCH}-${DATE} --os linux --arch arm
- docker manifest annotate ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE} ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME_64}:${MAJOR}.${MINOR}.${PATCH}-${DATE} --os linux --arch arm64
- docker manifest inspect -v ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE}
- (if [ ${RESULT} == 1 ] ; then docker manifest push ${DOCKER_HUB_REPOSITORY}/${IMAGE_NAME}:${MAJOR}.${MINOR}.${PATCH}-${DATE} ; else echo Image with this tag already exists. ; fi)
docker-deploy-rt-tests-multiarch-patch-date:
extends: .docker-deploy-multiarch-patch-date
before_script:
- export MAJOR="${RT_TESTS_MAJOR}"
- export MINOR="${RT_TESTS_MINOR}"
- export PATCH="${RT_TESTS_PATCH}"
variables:
IMAGE_NAME: rt-tests
IMAGE_NAME_32: arm32v7-rt-tests
IMAGE_NAME_64: arm64v8-rt-tests
stage: deploy-multiarch-patch-date
docker-deploy-stress-tests-multiarch-patch-date:
extends: .docker-deploy-multiarch-patch-date
before_script:
- export MAJOR="${STRESS_TESTS_MAJOR}"
- export MINOR="${STRESS_TESTS_MINOR}"
- export PATCH="${STRESS_TESTS_PATCH}"
variables:
IMAGE_NAME: stress-tests
IMAGE_NAME_32: arm32v7-stress-tests
IMAGE_NAME_64: arm64v8-stress-tests
stage: deploy-multiarch-patch-date