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_HOST_B = '43.153.21.64' REMOTE_PROJECT_PATH = '/data/webapps/lessie-list' } stages { stage('Checkout 代码') { steps { git branch: "${params.GIT_BRANCH}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/web/lessie-list.git' } } stage('同步A') { steps { sh """ ssh ${REMOTE_HOST} 'mkdir -p ${REMOTE_PROJECT_PATH}' rsync -avz --delete --exclude='node_modules' ${WORKSPACE}/ ${REMOTE_HOST}:${REMOTE_PROJECT_PATH}/ """ } } stage('安装启动A') { steps { sh """ ssh ${REMOTE_HOST} ' cd ${REMOTE_PROJECT_PATH} && pm2 delete lessie-list || true && pm2 list && nvm use 22.21.1 && npm install && npm run build:prod && pm2 start ecosystem.config.cjs --env production && pm2 save ' """ } } stage('同步B') { steps { sh """ ssh ${REMOTE_HOST_B} 'mkdir -p ${REMOTE_PROJECT_PATH}' rsync -avz --delete --exclude='node_modules' ${WORKSPACE}/ ${REMOTE_HOST_B}:${REMOTE_PROJECT_PATH}/ """ } } stage('安装启动B') { steps { sh """ ssh ${REMOTE_HOST_B} ' cd ${REMOTE_PROJECT_PATH} && pm2 delete lessie-list || true && pm2 list && nvm use 22.21.1 && npm install && npm run build:prod && pm2 start ecosystem.config.cjs --env production && pm2 save ' """ } } } post { success { echo '部署成功' } failure { echo '部署失败,请检查日志' } } }