From fc57bdffb5ebce95cad37095d1dbc8e87d2354fe Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Wed, 4 Sep 2024 04:18:53 +0200 Subject: [PATCH] ci(gitlab-ci): replace manual frontend container build check if image already exists in the registry and build if not; also rebuild on manual run --- .gitlab-ci.yml | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index de08546ed..8bd31c137 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -77,28 +77,32 @@ setup:dynamic: rules: - when: always -setup:containers:frontend: &containers-frontend +setup:containers:frontend: stage: setup needs: - setup:dynamic image: ${IMAGE_BUILDER} script: - FRONTEND_IMAGE_VERSION=`cat frontend-image-version` - - buildah bud -t frontend/${CI_COMMIT_REF_SLUG}:${FRONTEND_IMAGE_VERSION} --build-arg PROJECT_DIR=${CI_PROJECT_DIR} --volume ${CI_PROJECT_DIR}:/tmp/${CI_PROJECT_DIR} --file docker/frontend/Dockerfile - - buildah push --creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" frontend/${CI_COMMIT_REF_SLUG}:${FRONTEND_IMAGE_VERSION} ${CI_REGISTRY_IMAGE}/frontend/${CI_COMMIT_REF_SLUG}:${FRONTEND_IMAGE_VERSION} - rules: - - changes: - paths: - - docker/frontend/Dockerfile - - package.json - - package-lock.json - - webpack.config.js - interruptible: false -setup:containers:frontend:manual: - <<: *containers-frontend + - IMAGE_TAG=frontend/${CI_COMMIT_REF_SLUG}:${FRONTEND_IMAGE_VERSION} + - REGISTRY_DESTINATION=${CI_REGISTRY_IMAGE}/frontend/${CI_COMMIT_REF_SLUG}:${FRONTEND_IMAGE_VERSION} + - IMAGE_EXISTS=`curl "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/registry/repositories?tags=true" | grep \""${REGISTRY_DESTINATION}"\"` + - ${FORCE_REBUILD_IMAGE} && echo "Force rebuilding container." + - > + if [ ${IMAGE_EXISTS} -a ! ${FORCE_REBUILD_IMAGE} ]; then + echo "Image ${IMAGE_TAG} already exists in the container registry. Skipping build." + else + echo "Building image..." + buildah bud -t ${IMAGE_TAG} --build-arg PROJECT_DIR=${CI_PROJECT_DIR} --volume ${CI_PROJECT_DIR}:/tmp/${CI_PROJECT_DIR} --file docker/frontend/Dockerfile + buildah push --creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" ${IMAGE_TAG} ${REGISTRY_DESTINATION} rules: + - when: always + variables: + FORCE_REBUILD_IMAGE: false - when: manual - allow_failure: true + variables: + FORCE_REBUILD_IMAGE: true + interruptible: false setup:containers:backend: &containers-backend stage: setup