pipeline { agent any parameters { gitParameter( branchFilter: 'origin/(.*)', defaultValue: 'zhangze-init', 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/lessie-email' } stages { stage('Checkout 代码') { steps { git branch: "${params.GIT_BRANCH}", credentialsId: 'fly_gitlab_auth', url: 'http://172.24.16.20/python/lessie-email.git' } } stage('同步文件') { steps { sh """ rsync -avz --exclude '.venv' ${WORKSPACE}/ ${REMOTE_HOST}:${REMOTE_PROJECT_PATH}/ """ } } // stage('下线服务') { // steps { // sh """ // """ // } // } stage('安装 & 启动服务') { steps { sh """ ssh ${REMOTE_HOST} ' cd ${REMOTE_PROJECT_PATH} uv sync TIMESTAMP=\$(date +"%Y%m%d_%H%M%S") LOGFILE="${REMOTE_PROJECT_PATH}/logs/lessie_email_\${TIMESTAMP}.log" nohup ENV=s4 uv run uvicorn app.main:app --port 8031 > "\$LOGFILE" 2>&1 & ln -sf "\$LOGFILE" {REMOTE_PROJECT_PATH}/logs/lessie_email_latest.log ' """ } } // stage('检查服务') { // steps { // sh """ // ssh ${REMOTE_HOST} ' // ' // """ // } // } post { success { echo '部署成功' } failure { echo '部署失败,请检查日志' } } }