stages: - build_backend - build_frontend - deploy variables: GIT_STRATEGY: clone JAVA_HOME: "/data2/wzb/tools/jdk8" M2_HOME: "/data2/wzb/tools/maven" PATH: "/data2/wzb/tools/maven/bin:/data2/wzb/tools/jdk8/bin:/usr/local/bin:/usr/bin:/bin" # 1. 编译打包后端 build_backend: stage: build_backend tags: - railway-deploy rules: - if: '$CI_COMMIT_BRANCH' script: - echo "=== 开始编译后端 RuoYi-Vue ===" - export JAVA_HOME=/data2/wzb/tools/jdk8 - export PATH=/data2/wzb/tools/maven/bin:$JAVA_HOME/bin:$PATH - javac -version - cd RuoYi-Vue - mvn clean package -DskipTests - echo "=== 后端编译成功 ===" artifacts: expire_in: 2 days paths: - RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar # 2. 编译打包前端 build_frontend: stage: build_frontend tags: - railway-deploy rules: - if: '$CI_COMMIT_BRANCH' script: - echo "=== 开始编译前端 build_ui ===" - export NODE_OPTIONS="--openssl-legacy-provider --dns-result-order=ipv4first" - cd build_ui - if [ ! -d "node_modules" ] && [ -d "/data2/wzb/tools/frontend-cache/node_modules" ]; then echo "使用服务器本地缓存的 node_modules"; ln -sfn /data2/wzb/tools/frontend-cache/node_modules ./node_modules; fi - npm run build:prod - echo "=== 前端编译成功 ===" artifacts: expire_in: 2 days paths: - build_ui/dist/ # 3. 部署到业务目录并平滑重启 deploy_production: stage: deploy tags: - railway-deploy rules: - if: '$CI_COMMIT_BRANCH' script: - echo "=== 开始部署应用 ===" # 部署前端静态资源到发布目录 - rm -rf /data2/wzb/deploy/frontend/* - cp -r build_ui/dist/* /data2/wzb/deploy/frontend/ # 部署后端 Jar 包并执行平滑重启 - cp RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar /data2/wzb/deploy/backend/ - chmod +x deploy/restart-all.sh - bash deploy/restart-all.sh - echo "=== 部署与自检成功完成! ==="