ci: 添加 Jenkinsfile 用于构建、推送和部署 Docker 镜像

This commit is contained in:
2026-05-06 16:42:32 +08:00
parent a5d681d55b
commit 854817e0c4
Vendored
+66
View File
@@ -0,0 +1,66 @@
pipeline {
agent any
environment {
REGISTRY = 'git.virtheart.com'
REGISTRY_OWNER = 'virtheart'
REGISTRY_USERNAME = 'chenchun@virtheart.com'
IMAGE_NAME = "${env.JOB_NAME.replace(' ', '-').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 """
docker build -t ${imageFullName} .
"""
}
}
}
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 """
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()
}
}
}