ci: publish header and updater images
This commit is contained in:
57
Jenkinsfile
vendored
57
Jenkinsfile
vendored
@@ -21,8 +21,10 @@ pipeline {
|
|||||||
|
|
||||||
environment {
|
environment {
|
||||||
GIT_URL = 'https://gitea.mindboost.team/mindboost/education-flagger.git'
|
GIT_URL = 'https://gitea.mindboost.team/mindboost/education-flagger.git'
|
||||||
IMAGE_NAME = 'mindboost/education-flagger'
|
HEADER_IMAGE_NAME = 'mindboost/education-flagger-header'
|
||||||
LOCAL_IMAGE_NAME = 'education_flagger_image'
|
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'
|
GIT_CREDENTIALS_ID = 'b5f383be-8c74-40f9-b7e1-3a9c5856df0e'
|
||||||
REGISTRY_CREDENTIALS_ID = '62d300cc-d8c6-437a-8699-c58b9e1edcb0'
|
REGISTRY_CREDENTIALS_ID = '62d300cc-d8c6-437a-8699-c58b9e1edcb0'
|
||||||
REGISTRY_SCHEME = 'https'
|
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 {
|
steps {
|
||||||
script {
|
script {
|
||||||
def cleanBuild = params?.CLEAN_BUILD == true
|
def cleanBuild = params?.CLEAN_BUILD == true
|
||||||
def imageExists = sh(
|
def headerImageExists = sh(
|
||||||
script: "docker images -q ${env.LOCAL_IMAGE_NAME}:${env.IMAGE_TAG} || true",
|
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
|
returnStdout: true
|
||||||
).trim()
|
).trim()
|
||||||
|
|
||||||
if (cleanBuild) {
|
if (cleanBuild) {
|
||||||
echo "CLEAN_BUILD=true: ignoring existing local image ${env.LOCAL_IMAGE_NAME}:${env.IMAGE_TAG}."
|
echo "CLEAN_BUILD=true: ignoring existing local images for tag ${env.IMAGE_TAG}."
|
||||||
} else if (imageExists) {
|
} else if (headerImageExists && updaterImageExists) {
|
||||||
echo "Docker image with tag ${env.IMAGE_TAG} already exists locally. Skipping build."
|
echo "Both Docker images with tag ${env.IMAGE_TAG} already exist locally. Skipping build."
|
||||||
currentBuild.result = 'SUCCESS'
|
currentBuild.result = 'SUCCESS'
|
||||||
return
|
return
|
||||||
} else {
|
} 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 {
|
when {
|
||||||
expression { currentBuild.result == null }
|
expression { currentBuild.result == null }
|
||||||
}
|
}
|
||||||
@@ -140,12 +146,13 @@ pipeline {
|
|||||||
script {
|
script {
|
||||||
def cleanBuild = params?.CLEAN_BUILD == true
|
def cleanBuild = params?.CLEAN_BUILD == true
|
||||||
def buildFlags = cleanBuild ? '--pull --no-cache ' : ''
|
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 {
|
when {
|
||||||
expression { currentBuild.result == null }
|
expression { currentBuild.result == null }
|
||||||
}
|
}
|
||||||
@@ -160,12 +167,14 @@ pipeline {
|
|||||||
]) {
|
]) {
|
||||||
def registryAuthority = env.REGISTRY_HOST
|
def registryAuthority = env.REGISTRY_HOST
|
||||||
def registryEndpoint = "${env.REGISTRY_SCHEME}://${registryAuthority}"
|
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([
|
withEnv([
|
||||||
"REGISTRY_AUTHORITY=${registryAuthority}",
|
"REGISTRY_AUTHORITY=${registryAuthority}",
|
||||||
"REGISTRY_ENDPOINT=${registryEndpoint}",
|
"REGISTRY_ENDPOINT=${registryEndpoint}",
|
||||||
"REMOTE_IMAGE_TAG=${remoteImageTag}"
|
"REMOTE_HEADER_IMAGE_TAG=${remoteHeaderImageTag}",
|
||||||
|
"REMOTE_UPDATER_IMAGE_TAG=${remoteUpdaterImageTag}"
|
||||||
]) {
|
]) {
|
||||||
sh '''
|
sh '''
|
||||||
set -eux
|
set -eux
|
||||||
@@ -189,20 +198,28 @@ pipeline {
|
|||||||
echo "REGISTRY_ENDPOINT is empty. Registry endpoint not resolved." >&2
|
echo "REGISTRY_ENDPOINT is empty. Registry endpoint not resolved." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ -z "${REMOTE_IMAGE_TAG:-}" ]; then
|
if [ -z "${REMOTE_HEADER_IMAGE_TAG:-}" ]; then
|
||||||
echo "REMOTE_IMAGE_TAG is empty. Derived Docker tag missing." >&2
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
docker --version
|
docker --version
|
||||||
docker info
|
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 "Logging into Docker registry $REGISTRY_ENDPOINT as $REGISTRY_USER"
|
||||||
echo "$REGISTRY_PASS" | docker login "$REGISTRY_ENDPOINT" --username "$REGISTRY_USER" --password-stdin
|
echo "$REGISTRY_PASS" | docker login "$REGISTRY_ENDPOINT" --username "$REGISTRY_USER" --password-stdin
|
||||||
docker tag "$LOCAL_IMAGE_NAME:$IMAGE_TAG" "$REMOTE_IMAGE_TAG"
|
docker tag "$LOCAL_HEADER_IMAGE_NAME:$IMAGE_TAG" "$REMOTE_HEADER_IMAGE_TAG"
|
||||||
echo "Pushing Docker image $REMOTE_IMAGE_TAG to $REGISTRY_AUTHORITY"
|
docker tag "$LOCAL_UPDATER_IMAGE_NAME:$IMAGE_TAG" "$REMOTE_UPDATER_IMAGE_TAG"
|
||||||
docker push "$REMOTE_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"
|
docker logout "$REGISTRY_ENDPOINT"
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user