name: Build and Deploy Spring Boot on: push: branches: [ master ] # 可以根据需要修改分支名 workflow_dispatch: # 允许手动触发 jobs: build-and-deploy: runs-on: ubuntu-latest steps: # 检出代码 - name: "拉取代码" uses: actions/checkout@v4 # 设置JDK环境 - name: "部署jdk8" uses: actions/setup-java@v3 with: java-version: '8' distribution: 'adopt' # 设置maven环境 - name: "部署maven" uses: stCarolas/setup-maven@v4.5 with: maven-version: '3.8.6' # 缓存Maven依赖 - name: "设置maven缓存" uses: actions/cache@v2 with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 # 使用Maven打包 - name: "打包" run: mvn clean package -DskipTests # 将JAR包传输到服务器部署 - name: "推送" uses: appleboy/scp-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} password: ${{ secrets.SERVER_PASSWORD }} port: ${{ secrets.SERVER_PORT }} source: target/${{ vars.JAR_NAME }} target: /home/tools/${{ vars.APP_NAME }}/package # 停止原应用 - name: 停止原应用 uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} password: ${{ secrets.SERVER_PASSWORD }} port: ${{ secrets.SERVER_PORT }} script: | screen -list | grep -q "${{ vars.APP_NAME }}" && screen -S ${{ vars.APP_NAME }} -X quit; true # 使用新版jar包启动应用 - name: 使用新版jar包启动应用 uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} password: ${{ secrets.SERVER_PASSWORD }} port: ${{ secrets.SERVER_PORT }} script: | rm -f /home/tools/${{ vars.APP_NAME }}/${{ vars.JAR_NAME }} mv /home/tools/${{ vars.APP_NAME }}/package/target/${{ vars.JAR_NAME }} /home/tools/${{ vars.APP_NAME }}/${{ vars.JAR_NAME }} screen -ls screen -dmS ${{ vars.APP_NAME }} /usr/local/java/jdk1.8.0_202/bin/java -jar /home/tools/${{ vars.APP_NAME }}/${{ vars.JAR_NAME }}>/home/tools/${{ vars.APP_NAME }}/apprun.log screen -ls