pipeline { agent any parameters { gitParameter( branchFilter: 'origin/(.*)', defaultValue: 'release', 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-react' } stages { stage('Checkout 代码') { steps { git branch: "${params.GIT_BRANCH}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/web/lessie-react.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-react || true && pm2 list && nvm use 22.21.1 && npm install && npm run build && pm2 start ecosystem.config.cjs && 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-react || true && pm2 list && nvm use 22.21.1 && npm install && npm run build && pm2 start ecosystem.config.cjs && pm2 save ' """ } } } post { success { echo '部署成功' } failure { echo '部署失败,请检查日志' } } }