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.
136 lines
4.6 KiB
Groovy
136 lines
4.6 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
DOCKER_HUB_USERNAME = 'aimodocker'
|
|
DOCKER_AUTH = credentials('aimodocker') // provides DOCKER_AUTH_USR / DOCKER_AUTH_PSW
|
|
IMAGE_NAME = 'digitaltwin_frontend_v2'
|
|
|
|
// Populated in Checkout stage
|
|
GIT_COMMIT_HASH = ""
|
|
IMAGE_TAG = ""
|
|
SECONDARY_TAG = ""
|
|
}
|
|
|
|
parameters {
|
|
string(
|
|
name: 'EXTRA_DOCKER_BUILD_ARGS',
|
|
defaultValue: '',
|
|
description: 'Optional extra docker build args, e.g. --build-arg VITE_AUTH_APP_URL=https://api.example.com/auth'
|
|
)
|
|
}
|
|
|
|
stages {
|
|
|
|
stage('Checkout & Setup') {
|
|
steps {
|
|
script {
|
|
checkout scm
|
|
|
|
GIT_COMMIT_HASH = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
|
|
|
def branch = env.BRANCH_NAME ?: 'unknown'
|
|
echo "Branch: ${branch} | Commit: ${GIT_COMMIT_HASH}"
|
|
|
|
if (branch == 'main') {
|
|
IMAGE_TAG = GIT_COMMIT_HASH
|
|
SECONDARY_TAG = 'latest'
|
|
} else {
|
|
IMAGE_TAG = "temp-${GIT_COMMIT_HASH}"
|
|
SECONDARY_TAG = ""
|
|
}
|
|
|
|
echo "Primary Tag : ${IMAGE_TAG}"
|
|
echo "Secondary Tag: ${SECONDARY_TAG ?: '(none)'}"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Docker Login') {
|
|
steps {
|
|
sh 'echo "$DOCKER_AUTH_PSW" | docker login -u "$DOCKER_AUTH_USR" --password-stdin'
|
|
}
|
|
}
|
|
|
|
stage('Build & Tag') {
|
|
steps {
|
|
script {
|
|
def fullImage = "${DOCKER_HUB_USERNAME}/${IMAGE_NAME}"
|
|
def viteArgs = [
|
|
'VITE_AUTH_APP_URL',
|
|
'VITE_EFFICIENCY_APP_URL',
|
|
'VITE_OH_APP_URL',
|
|
'VITE_PFI_APP_URL',
|
|
'VITE_API_V1_LIVE',
|
|
'VITE_LCCA_APP_URL',
|
|
'VITE_RELIABILITY_APP_URL',
|
|
'VITE_RISK_MATRIX_APP_URL',
|
|
'VITE_EQUIPMENT_IMAGE_URL',
|
|
'VITE_API_MONITORING_URL',
|
|
'VITE_RBD_APP_URL',
|
|
'VITE_IRCFA_APP_URL',
|
|
'VITE_AHM_APP_URL',
|
|
'VITE_OPS_DOCK_APP_URL',
|
|
'VITE_AUTH_URL',
|
|
'VITE_AUTH_SECRET',
|
|
'VITE_ENABLE_SECURE_EXPORT',
|
|
'VITE_ALLOW_ACCESS_EFFICIENCY',
|
|
'VITE_ALLOW_ACCESS_PFI',
|
|
'VITE_ALLOW_ACCESS_RELIABILITY',
|
|
'VITE_ALLOW_ACCESS_RISK_MATRIX',
|
|
'VITE_ALLOW_ACCESS_LCCA',
|
|
'VITE_ALLOW_ACCESS_RBD',
|
|
'VITE_ALLOW_ACCESS_OH',
|
|
'VITE_ALLOW_ACCESS_IRCFA',
|
|
'VITE_ALLOW_ACCESS_AHM',
|
|
'VITE_ENVIRONMENT'
|
|
].collect { "--build-arg ${it}" }.join(' ')
|
|
def extraArgs = params.EXTRA_DOCKER_BUILD_ARGS?.trim() ?: ''
|
|
|
|
sh "docker build ${viteArgs} ${extraArgs} -t ${fullImage}:${IMAGE_TAG} ."
|
|
|
|
if (SECONDARY_TAG) {
|
|
sh "docker tag ${fullImage}:${IMAGE_TAG} ${fullImage}:${SECONDARY_TAG}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Push to Docker Hub') {
|
|
steps {
|
|
script {
|
|
def fullImage = "${DOCKER_HUB_USERNAME}/${IMAGE_NAME}"
|
|
|
|
sh "docker push ${fullImage}:${IMAGE_TAG}"
|
|
|
|
if (SECONDARY_TAG) {
|
|
sh "docker push ${fullImage}:${SECONDARY_TAG}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
script {
|
|
sh 'docker logout'
|
|
|
|
def fullImage = "${DOCKER_HUB_USERNAME}/${IMAGE_NAME}"
|
|
if (IMAGE_TAG?.trim()) {
|
|
sh "docker rmi ${fullImage}:${IMAGE_TAG} || true"
|
|
}
|
|
if (SECONDARY_TAG?.trim()) {
|
|
sh "docker rmi ${fullImage}:${SECONDARY_TAG} || true"
|
|
}
|
|
}
|
|
}
|
|
success {
|
|
echo "Image ${DOCKER_HUB_USERNAME}/${IMAGE_NAME}:${IMAGE_TAG} pushed successfully."
|
|
}
|
|
failure {
|
|
echo "Pipeline failed on branch ${env.BRANCH_NAME}."
|
|
}
|
|
}
|
|
}
|