Files
django-vue3-admin/web/Jenkinsfile
T

61 lines
1.8 KiB
Groovy

pipeline {
agent any
environment {
HARBOR_URL = '192.168.80.90:8090'
HARBOR_PROJECT = 'pis'
IMAGE_NAME = 'pis-web'
CREDENTIALS_ID = 'harbor-credentials'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build Image') {
steps {
script {
def imageTag = "${HARBOR_URL}/${HARBOR_PROJECT}/${IMAGE_NAME}:${BUILD_NUMBER}"
env.IMAGE_TAG = imageTag
sh """
docker build -f web/Dockerfile \
-t ${imageTag} .
"""
}
}
}
stage('Push to Harbor') {
steps {
script {
withCredentials([usernamePassword(
credentialsId: CREDENTIALS_ID,
usernameVariable: 'HARBOR_USER',
passwordVariable: 'HARBOR_PASS'
)]) {
sh """
echo ${HARBOR_PASS} | docker login ${HARBOR_URL} -u ${HARBOR_USER} --password-stdin
docker push ${IMAGE_TAG} || true
docker tag ${IMAGE_TAG} ${HARBOR_URL}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest
docker push ${HARBOR_URL}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest || true
docker logout ${HARBOR_URL}
"""
}
}
}
}
}
post {
failure {
echo "Frontend Pipeline failed! Check Jenkins logs."
}
success {
echo "Frontend image pushed to Harbor: ${IMAGE_TAG}"
}
}
}