diff --git a/Jenkinsfile b/Jenkinsfile index c48e181..74b5a36 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,8 +21,10 @@ pipeline { environment { GIT_URL = 'https://gitea.mindboost.team/mindboost/education-flagger.git' - IMAGE_NAME = 'mindboost/education-flagger' - LOCAL_IMAGE_NAME = 'education_flagger_image' + HEADER_IMAGE_NAME = 'mindboost/education-flagger-header' + UPDATER_IMAGE_NAME = 'mindboost/education-flagger-updater' + LOCAL_HEADER_IMAGE_NAME = 'education_flagger_header_image' + LOCAL_UPDATER_IMAGE_NAME = 'education_flagger_updater_image' GIT_CREDENTIALS_ID = 'b5f383be-8c74-40f9-b7e1-3a9c5856df0e' REGISTRY_CREDENTIALS_ID = '62d300cc-d8c6-437a-8699-c58b9e1edcb0' REGISTRY_SCHEME = 'https' @@ -110,29 +112,33 @@ pipeline { } } - stage('Check Docker Image with the same tag') { + stage('Check Docker Images with the same tag') { steps { script { def cleanBuild = params?.CLEAN_BUILD == true - def imageExists = sh( - script: "docker images -q ${env.LOCAL_IMAGE_NAME}:${env.IMAGE_TAG} || true", + def headerImageExists = sh( + script: "docker images -q ${env.LOCAL_HEADER_IMAGE_NAME}:${env.IMAGE_TAG} || true", + returnStdout: true + ).trim() + def updaterImageExists = sh( + script: "docker images -q ${env.LOCAL_UPDATER_IMAGE_NAME}:${env.IMAGE_TAG} || true", returnStdout: true ).trim() if (cleanBuild) { - echo "CLEAN_BUILD=true: ignoring existing local image ${env.LOCAL_IMAGE_NAME}:${env.IMAGE_TAG}." - } else if (imageExists) { - echo "Docker image with tag ${env.IMAGE_TAG} already exists locally. Skipping build." + echo "CLEAN_BUILD=true: ignoring existing local images for tag ${env.IMAGE_TAG}." + } else if (headerImageExists && updaterImageExists) { + echo "Both Docker images with tag ${env.IMAGE_TAG} already exist locally. Skipping build." currentBuild.result = 'SUCCESS' return } else { - echo 'No existing local Docker image found. Building a new image.' + echo 'At least one local Docker image is missing. Building fresh images.' } } } } - stage('Build Docker Image') { + stage('Build Docker Images') { when { expression { currentBuild.result == null } } @@ -140,12 +146,13 @@ pipeline { script { def cleanBuild = params?.CLEAN_BUILD == true def buildFlags = cleanBuild ? '--pull --no-cache ' : '' - sh "docker build ${buildFlags}-t ${env.LOCAL_IMAGE_NAME}:${env.IMAGE_TAG} ." + sh "docker build ${buildFlags}-t ${env.LOCAL_HEADER_IMAGE_NAME}:${env.IMAGE_TAG} ." + sh "docker build ${buildFlags}-t ${env.LOCAL_UPDATER_IMAGE_NAME}:${env.IMAGE_TAG} ./asn-updater" } } } - stage('Push Docker Image') { + stage('Push Docker Images') { when { expression { currentBuild.result == null } } @@ -160,12 +167,14 @@ pipeline { ]) { def registryAuthority = env.REGISTRY_HOST def registryEndpoint = "${env.REGISTRY_SCHEME}://${registryAuthority}" - def remoteImageTag = "${registryAuthority}/${env.IMAGE_NAME}:${env.IMAGE_TAG}" + def remoteHeaderImageTag = "${registryAuthority}/${env.HEADER_IMAGE_NAME}:${env.IMAGE_TAG}" + def remoteUpdaterImageTag = "${registryAuthority}/${env.UPDATER_IMAGE_NAME}:${env.IMAGE_TAG}" withEnv([ "REGISTRY_AUTHORITY=${registryAuthority}", "REGISTRY_ENDPOINT=${registryEndpoint}", - "REMOTE_IMAGE_TAG=${remoteImageTag}" + "REMOTE_HEADER_IMAGE_TAG=${remoteHeaderImageTag}", + "REMOTE_UPDATER_IMAGE_TAG=${remoteUpdaterImageTag}" ]) { sh ''' set -eux @@ -189,20 +198,28 @@ pipeline { echo "REGISTRY_ENDPOINT is empty. Registry endpoint not resolved." >&2 exit 1 fi - if [ -z "${REMOTE_IMAGE_TAG:-}" ]; then - echo "REMOTE_IMAGE_TAG is empty. Derived Docker tag missing." >&2 + if [ -z "${REMOTE_HEADER_IMAGE_TAG:-}" ]; then + echo "REMOTE_HEADER_IMAGE_TAG is empty. Derived header Docker tag missing." >&2 + exit 1 + fi + if [ -z "${REMOTE_UPDATER_IMAGE_TAG:-}" ]; then + echo "REMOTE_UPDATER_IMAGE_TAG is empty. Derived updater Docker tag missing." >&2 exit 1 fi docker --version docker info - docker image inspect "$LOCAL_IMAGE_NAME:$IMAGE_TAG" >/dev/null + docker image inspect "$LOCAL_HEADER_IMAGE_NAME:$IMAGE_TAG" >/dev/null + docker image inspect "$LOCAL_UPDATER_IMAGE_NAME:$IMAGE_TAG" >/dev/null echo "Logging into Docker registry $REGISTRY_ENDPOINT as $REGISTRY_USER" echo "$REGISTRY_PASS" | docker login "$REGISTRY_ENDPOINT" --username "$REGISTRY_USER" --password-stdin - docker tag "$LOCAL_IMAGE_NAME:$IMAGE_TAG" "$REMOTE_IMAGE_TAG" - echo "Pushing Docker image $REMOTE_IMAGE_TAG to $REGISTRY_AUTHORITY" - docker push "$REMOTE_IMAGE_TAG" + docker tag "$LOCAL_HEADER_IMAGE_NAME:$IMAGE_TAG" "$REMOTE_HEADER_IMAGE_TAG" + docker tag "$LOCAL_UPDATER_IMAGE_NAME:$IMAGE_TAG" "$REMOTE_UPDATER_IMAGE_TAG" + echo "Pushing Docker image $REMOTE_HEADER_IMAGE_TAG to $REGISTRY_AUTHORITY" + docker push "$REMOTE_HEADER_IMAGE_TAG" + echo "Pushing Docker image $REMOTE_UPDATER_IMAGE_TAG to $REGISTRY_AUTHORITY" + docker push "$REMOTE_UPDATER_IMAGE_TAG" docker logout "$REGISTRY_ENDPOINT" ''' }