diff --git a/jenkins/流水线配置/lessie-email.conf b/jenkins/流水线配置/lessie-email.conf new file mode 100644 index 0000000..1225423 --- /dev/null +++ b/jenkins/流水线配置/lessie-email.conf @@ -0,0 +1,81 @@ +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 '部署失败,请检查日志' + } + } +}