name: Deploy to Server # 触发条件:手动触发或推送到 main 分支 on: push: branches: [ main, master ] workflow_dispatch: # 允许手动触发 jobs: build-and-deploy: runs-on: ubuntu-latest steps: # 1. 检出代码 - name: 检出代码 uses: actions/checkout@v3 # 2. 设置 Java 环境 - name: 设置 Java 8 uses: actions/setup-java@v3 with: java-version: '8' distribution: 'temurin' cache: 'gradle' # 3. 赋予 Gradle wrapper 执行权限 - name: 赋予 Gradle wrapper 执行权限 run: chmod +x gradlew # 4. 构建项目 - name: 构建项目 run: ./gradlew build -x test # 5. 打包 JAR 文件 - name: 获取 JAR 文件名 id: jar run: echo "jar_file=$(ls build/libs/*.jar | head -n 1)" >> $GITHUB_OUTPUT # 6. 部署到服务器(使用 SCP) # 需要在 Gitea 仓库设置中配置以下 Secrets: # - SERVER_HOST: 服务器地址 # - SERVER_PORT: SSH 端口(默认 22) # - SERVER_USER: SSH 用户名 # - SERVER_SSH_KEY: SSH 私钥 # - DEPLOY_PATH: 部署路径(如 /opt/corewing) - name: 部署到服务器 uses: appleboy/scp-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} port: ${{ secrets.SERVER_PORT }} source: "build/libs/*.jar" target: ${{ secrets.DEPLOY_PATH }} strip_components: 2 # 7. 重启应用(通过 SSH 执行命令) - name: 重启应用 uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} port: ${{ secrets.SERVER_PORT }} script: | cd ${{ secrets.DEPLOY_PATH }} # 停止旧进程 pkill -f corewing || true # 等待进程完全停止 sleep 3 # 启动新进程 nohup java -jar *.jar > app.log 2>&1 & # 检查启动状态 sleep 5 if pgrep -f corewing > /dev/null; then echo "应用启动成功" else echo "应用启动失败" exit 1 fi