模板
2025年9月5日大约 1 分钟
pipeline {
agent {
label 'sz' // ⚠️ 替换为你的本地 Agent 的 label
}
parameters {
choice(
name: 'MODULE_NAME_SELECT',
choices: ['nginx', 'docker', 'service-b'],
description: '选择要构建的模块'
)
// 二级参数,默认值可以随便选,不是 docker 时可以忽略
choice(
name: 'DOCKER_SERVICE_SELECT',
choices: ['system','gateway','info','access','dorm','vehicle','visitor','firefighting','log-book','ledger'],
description: '选择 docker 服务 (仅在 MODULE_NAME_SELECT=docker 时生效)'
)
}
environment {
PROJECT_DIR = 'D:/wjn/yx/school-conf' // ⚠️ 替换为你的本地项目路径
}
stages {
stage('Checkout') {
steps {
// 如果使用本地代码,可省略这步;否则拉取仓库:
// git url: 'https://your-repo-url.git'
echo "Using local workspace at ${env.PROJECT_DIR}"
echo "选择构建模块: ${params.MODULE_NAME_SELECT}"
}
}
stage('Install Dependencies') {
steps {
dir("${env.PROJECT_DIR}") {
bat 'git checkout sz'
// 拉取最新代码
bat 'git pull origin sz'
}
}
}
stage('Build and Deploy') {
steps {
script {
def moduleName = params.MODULE_NAME_SELECT.toLowerCase() // 转小写
// 判断是否为 nginx
if (moduleName == 'nginx') {
echo "开始上传 nginx 文件..."
dir("${env.PROJECT_DIR}") {
bat "scp -r nginx/* root@soft.shingi:/home/ubuntu/conf.d/"
echo "nginx 文件上传完成。"
// 3. 重启容器
echo "🛑 重启容器..."
bat "ssh root@soft.shingi \"cd /home/ubuntu && docker-compose restart school-front"
echo "容器重启完成。"
}
}
if (moduleName == 'docker') {
echo "开始上传 docker compose 文件..."
dir("${env.PROJECT_DIR}") {
bat "scp -r docker/compose.yml root@soft.shingi:/home/ubuntu/"
echo "docker compose 文件上传完成。"
def dockerService = params.DOCKER_SERVICE_SELECT
echo "处理 docker 模块,选择的服务是: ${dockerService}"
echo "🛑 停止旧容器..."
bat "ssh root@soft.shingi \"cd /home/ubuntu && docker-compose down school-${dockerService}"
// 4. 运行新容器
echo "🚀 启动新容器..."
bat "ssh root@soft.shingi \"cd /home/ubuntu && docker-compose up school-${dockerService} -d"
echo "容器启动完成。"
}
}
else {
echo "非 nginx 模块,不进行上传"
}
}
}
}
}
post {
success {
echo "✅ Build and deployment successful."
}
failure {
echo "❌ Build or deployment failed."
}
}
}