Files
arcticnewone/Jenkinsfile
T
virtheart a4ee86a22b ci: 更新 Jenkinsfile 配置及部署流程
- 将镜像标签从构建号改为 latest
- 添加容器端口和主机端口配置
- 简化构建和部署脚本
- 添加容器拉取步骤并配置端口映射
2026-05-06 17:17:18 +08:00

66 lines
2.0 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 = 'latest'
CONTAINER_PORT = '3000'
HOST_PORT = '3010'
}
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 '''
set +x
echo $REGISTRY_PASSWORD | docker login $REGISTRY -u $REGISTRY_USERNAME --password-stdin
docker push ''' + 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 pull $imageFullName
docker run -d --name $IMAGE_NAME \
-p $HOST_PORT:$CONTAINER_PORT \
--restart unless-stopped \
$imageFullName
"""
}
}
}
}
post {
always {
cleanWs()
}
}
}