pipeline { agent any parameters { gitParameter( branchFilter: 'origin/(.*)', defaultValue: 'main', name: 'GIT_BRANCH', type: 'PT_BRANCH_TAG', selectedValue: 'DEFAULT', sortMode: 'NONE', description: '选择代码分支: ', quickFilterEnabled: true, tagFilter: '*', listSize: "5" ) } environment { REMOTE_HOST = '43.130.56.138' REMOTE_PROJECT_PATH = '/data/webapps/nodejs-email' } stages { stage('Checkout 代码') { steps { git branch: "${params.GIT_BRANCH}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/nodejs/nodejs-email.git' } } stage('生成 .env 文件') { steps { sh """ cd ${WORKSPACE} # 清空或创建文件 cat << 'EOF' > .env GOOGLE_CLIENT_ID=184829050868-h21pf2mj6c51e1hveop30arbt5mqqr0v.apps.googleusercontent.com GOOGLE_SECRET_ID=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 PORT=3005 DATABASE_URL="mysql://system:System8888!@10.0.0.10:3306/creator_contact_record?charset=utf8mb4&parseTime=true&loc=Local" EOF echo '查看 .env 文件内容' cat .env """ } } stage('同步文件') { steps { sh """ ssh ${REMOTE_HOST} 'mkdir -p ${REMOTE_PROJECT_PATH}' rsync -avz --delete --exclude='node_modules' ${WORKSPACE}/ ${REMOTE_HOST}:${REMOTE_PROJECT_PATH}/ """ } } stage('安装 & 启动服务') { steps { sh """ ssh ${REMOTE_HOST} ' cd ${REMOTE_PROJECT_PATH} && pm2 delete index || true && pm2 list && nvm use 20.19.6 && npm install && npx prisma generate && pm2 start index.js && pm2 save ' """ } } } post { success { echo '部署成功' } failure { echo '部署失败,请检查日志' } } }