Files
arcticnewone/Jenkinsfile
T
virtheart d64af52c2e ci(Jenkinsfile): 移除硬编码的registry用户名并增加docker调试信息
删除硬编码的REGISTRY_USERNAME环境变量,改为从外部传入
在docker构建和推送步骤中添加set -x和版本信息输出以便调试
增加docker构建失败时的错误处理和退出机制
2026-05-06 17:02:49 +08:00

69 lines
2.2 KiB
Groovy

pipeline {
agent any
environment {
REGISTRY = 'git.virtheart.com'
REGISTRY_OWNER = 'virtheart'
IMAGE_NAME = "${env.JOB_NAME.replaceAll(/[^a-zA-Z0-9.-]/, '-').toLowerCase()}"
IMAGE_TAG = "${env.BUILD_NUMBER}"
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Build Image') {
steps {
script {
def imageFullName = "${REGISTRY}/${REGISTRY_OWNER}/${IMAGE_NAME}:${IMAGE_TAG}"
sh """
set -x
docker version
docker info
docker build -t ${imageFullName} . || { echo "Docker build failed"; exit 1; }
"""
}
}
}
stage('Push Image') {
steps {
withCredentials([usernamePassword(credentialsId: 'docker-registry-credentials', usernameVariable: 'REGISTRY_USERNAME', passwordVariable: 'REGISTRY_PASSWORD')]) {
script {
def imageFullName = "${REGISTRY}/${REGISTRY_OWNER}/${IMAGE_NAME}:${IMAGE_TAG}"
sh """
set -x
echo ${REGISTRY_PASSWORD} | docker login ${REGISTRY} -u ${REGISTRY_USERNAME} --password-stdin
docker push ${imageFullName}
docker rmi ${imageFullName}
"""
}
}
}
}
stage('Deploy Container') {
steps {
script {
def imageFullName = "${REGISTRY}/${REGISTRY_OWNER}/${IMAGE_NAME}:${IMAGE_TAG}"
sh """
docker stop ${IMAGE_NAME} || true
docker rm ${IMAGE_NAME} || true
docker run -d --name ${IMAGE_NAME} \
--restart unless-stopped \
${imageFullName}
"""
}
}
}
}
post {
always {
cleanWs()
}
}
}