97 lines
2.7 KiB
Groovy
97 lines
2.7 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
DOCKER_REGISTRY = "${env.DOCKER_REGISTRY ?: 'localhost:5000'}"
|
|
IMAGE_BACKEND = "${DOCKER_REGISTRY}/gw-backend"
|
|
IMAGE_FRONTEND = "${DOCKER_REGISTRY}/gw-frontend"
|
|
GIT_COMMIT_SHORT = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim()
|
|
IMAGE_TAG = "${env.BUILD_NUMBER}-${GIT_COMMIT_SHORT}"
|
|
}
|
|
|
|
options {
|
|
buildDiscarder(logRotator(numToKeepStr: '10'))
|
|
timeout(time: 30, unit: 'MINUTES')
|
|
}
|
|
|
|
stages {
|
|
|
|
stage('Checkout') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
|
|
stage('Backend Build') {
|
|
steps {
|
|
dir('NEW/backend') {
|
|
sh './gradlew clean build -x test --no-daemon'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Frontend Build') {
|
|
steps {
|
|
dir('NEW/frontend') {
|
|
sh 'pnpm install --frozen-lockfile'
|
|
sh 'pnpm build'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Docker Build & Push') {
|
|
parallel {
|
|
stage('Backend Image') {
|
|
steps {
|
|
dir('NEW/backend') {
|
|
sh """
|
|
docker build -t ${IMAGE_BACKEND}:${IMAGE_TAG} -t ${IMAGE_BACKEND}:latest .
|
|
docker push ${IMAGE_BACKEND}:${IMAGE_TAG}
|
|
docker push ${IMAGE_BACKEND}:latest
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
stage('Frontend Image') {
|
|
steps {
|
|
dir('NEW/frontend') {
|
|
sh """
|
|
docker build -t ${IMAGE_FRONTEND}:${IMAGE_TAG} -t ${IMAGE_FRONTEND}:latest .
|
|
docker push ${IMAGE_FRONTEND}:${IMAGE_TAG}
|
|
docker push ${IMAGE_FRONTEND}:latest
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Deploy') {
|
|
when {
|
|
branch 'main'
|
|
}
|
|
steps {
|
|
dir('NEW') {
|
|
sh """
|
|
docker-compose pull
|
|
docker-compose up -d --no-build
|
|
docker-compose ps
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
echo "Build ${IMAGE_TAG} deployed successfully."
|
|
}
|
|
failure {
|
|
echo "Build failed. Check logs."
|
|
}
|
|
always {
|
|
sh 'docker system prune -f --filter "until=24h" || true'
|
|
}
|
|
}
|
|
}
|