All checks were successful
Build and Deploy Spring Boot / build-and-deploy (push) Successful in 43s
The command to start the application via `screen` was updated to use single quotes around the entire command, ensuring that all parts of the command are correctly interpreted. This change helps in avoiding potential issues with spaces or special characters in the paths.
71 lines
2.5 KiB
YAML
71 lines
2.5 KiB
YAML
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 -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' |