You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.1 KiB
Groovy
94 lines
3.1 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
DOCKER_HUB_USERNAME = 'aimodocker'
|
|
DOCKER_AUTH = credentials('aimodocker')
|
|
IMAGE_NAME = 'i-rcfa'
|
|
SERVICE_NAME = 'ahm-app'
|
|
SECURITY_PREFIX = 'security'
|
|
DOCKER_BUILDKIT = '1'
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout & Setup') {
|
|
steps {
|
|
script {
|
|
checkout scm
|
|
env.GIT_COMMIT_HASH = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
|
|
|
def branch = env.BRANCH_NAME ?: 'unknown'
|
|
echo "Current Branch: ${branch}"
|
|
|
|
if (branch == 'main') {
|
|
env.IMAGE_TAG = env.GIT_COMMIT_HASH
|
|
env.SECONDARY_TAG = 'latest'
|
|
} else if (branch == 'ircfa_security') {
|
|
env.IMAGE_TAG = "${env.SECURITY_PREFIX}-${env.GIT_COMMIT_HASH}"
|
|
env.SECONDARY_TAG = "${env.SECURITY_PREFIX}-latest"
|
|
} else {
|
|
env.IMAGE_TAG = "temp-${env.GIT_COMMIT_HASH}"
|
|
env.SECONDARY_TAG = ""
|
|
}
|
|
|
|
echo "Primary Tag: ${env.IMAGE_TAG}"
|
|
echo "Secondary Tag: ${env.SECONDARY_TAG}"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Docker Login') {
|
|
steps {
|
|
sh "echo ${DOCKER_AUTH_PSW} | docker login -u ${DOCKER_AUTH_USR} --password-stdin"
|
|
}
|
|
}
|
|
|
|
stage('Build & Tag') {
|
|
steps {
|
|
script {
|
|
def fullImageName = "${env.DOCKER_HUB_USERNAME}/${env.IMAGE_NAME}"
|
|
def cacheTag = env.SECONDARY_TAG ?: "latest"
|
|
|
|
echo "Pulling latest image for caching..."
|
|
sh "docker pull ${fullImageName}:${cacheTag} || true"
|
|
|
|
sh "docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from ${fullImageName}:${cacheTag} -t ${fullImageName}:${env.IMAGE_TAG} ."
|
|
|
|
if (env.SECONDARY_TAG) {
|
|
sh "docker tag ${fullImageName}:${env.IMAGE_TAG} ${fullImageName}:${env.SECONDARY_TAG}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Push to Docker Hub') {
|
|
steps {
|
|
script {
|
|
def fullImageName = "${env.DOCKER_HUB_USERNAME}/${env.IMAGE_NAME}"
|
|
sh "docker push ${fullImageName}:${env.IMAGE_TAG}"
|
|
|
|
if (env.SECONDARY_TAG) {
|
|
sh "docker push ${fullImageName}:${env.SECONDARY_TAG}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
script {
|
|
sh 'docker logout'
|
|
def fullImageName = "${env.DOCKER_HUB_USERNAME}/${env.IMAGE_NAME}"
|
|
sh "docker rmi ${fullImageName}:${env.IMAGE_TAG} || true"
|
|
if (env.SECONDARY_TAG) {
|
|
sh "docker rmi ${fullImageName}:${env.SECONDARY_TAG} || true"
|
|
}
|
|
}
|
|
}
|
|
success {
|
|
echo "Successfully processed ${env.BRANCH_NAME} — ${env.IMAGE_TAG}."
|
|
}
|
|
}
|
|
}
|