name: 自动部署 Spring Boot 项目到 CentOS 🚀 on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: # 1️⃣ 检出代码 - name: 🛠️ 检出代码 uses: actions/checkout@v3 # 2️⃣ 设置 Java 环境 - name: ☕ 设置 Java 环境 uses: actions/setup-java@v3 with: java-version: "17" distribution: "temurin" # 3️⃣ 构建 Spring Boot 项目 - name: 📦 构建 Spring Boot 项目 run: | ./mvnw clean package -DskipTests ls -lh target/ # 4️⃣ 获取 JAR 文件路径 - name: 获取 JAR 文件路径 id: jar_path run: echo "JAR_FILE=$(ls target/*.jar)" >> $GITHUB_ENV # 5️⃣ 确保目标目录存在 - name: 🗂️ 确保远程路径 run: ssh root@8.137.89.177 "mkdir -p /huertian && chmod 755 /huertian" # 6️⃣ 上传和部署 - name: 🚀 部署到服务器 env: DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} run: | echo "$DEPLOY_KEY" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H 8.137.89.177 >> ~/.ssh/known_hosts # 上传文件 scp ${{ env.JAR_FILE }} root@8.137.89.177:/huertian/app.jar # 校验文件完整性 ssh root@8.137.89.177 "sha256sum /huertian/app.jar" # 重启服务 ssh root@8.137.89.177 << 'EOF' cd /huertian pkill -f 'java -jar' || true nohup java -jar app.jar --spring.config.location=/huertian/application.yml >> /huertian/log/app_$(date +%F).log 2>&1 & exit EOF # 7️⃣ 检查启动日志 - name: 检查启动日志 run: ssh root@8.137.89.177 "tail -n 20 /huertian/log/app_$(date +%F).log"