Files
huachuang/Jenkinsfile

88 lines
3.0 KiB
Groovy
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// nl-server 单体部署流水线(构建机 = 运行机Linux + JDK17+ + Maven + Docker
pipeline {
agent any
parameters {
choice(name: 'PROFILE', choices: ['test', 'dev', 'prod'], description: '运行环境(注入 SPRING_PROFILES_ACTIVE')
string(name: 'JAVA_OPTS', defaultValue: '-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom', description: 'JVM 启动参数')
}
environment {
IMAGE_NAME = 'nl-server'
CONTAINER_NAME = 'nl-server'
APP_PORT = '48080'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Maven Build') {
steps {
// 只构建 nl-server 及其依赖模块,跳过测试
sh 'mvn clean package -pl nl-server -am -DskipTests'
}
}
stage('Docker Build') {
steps {
// 构建上下文为 nl-server 目录,复用其现有 Dockerfile
sh "docker build -t ${IMAGE_NAME}:${BUILD_NUMBER} -t ${IMAGE_NAME}:latest nl-server/"
}
}
stage('Deploy') {
steps {
// 停删旧容器首次部署无旧容器容错处理host 网络启动新容器
sh """
docker stop ${CONTAINER_NAME} || true
docker rm ${CONTAINER_NAME} || true
docker run -d --name ${CONTAINER_NAME} \\
--restart always \\
--network host \\
-v /docker/nl-cloud/logs:/root/logs/ \\
-e TZ=Asia/Shanghai \\
-e SPRING_PROFILES_ACTIVE=${params.PROFILE} \\
-e "JAVA_OPTS=${params.JAVA_OPTS}" \\
${IMAGE_NAME}:${BUILD_NUMBER}
"""
}
}
stage('Health Check') {
steps {
// 最多等待 24 次 x 5s ≈ 120s收到任意 HTTP 响应(含 404即视为启动成功
sh """
echo "等待 nl-server 启动..."
for i in \$(seq 1 24); do
if curl -s -o /dev/null http://127.0.0.1:${APP_PORT}; then
echo "nl-server 启动成功"
exit 0
fi
sleep 5
done
echo "健康检查超时,输出容器日志:"
docker logs --tail 200 ${CONTAINER_NAME}
exit 1
"""
}
}
}
post {
success {
echo "部署成功:${IMAGE_NAME}:${BUILD_NUMBER},服务端口 ${APP_PORT}(历史镜像 tag 保留,可用于手动回滚)"
}
failure {
echo '部署失败,请检查上方日志'
}
always {
// 仅清理悬空镜像,保留历史 BUILD_NUMBER tag
sh 'docker image prune -f || true'
}
}
}