All checks were successful
Build and Deploy Spring Boot / build-and-deploy (push) Successful in 33s
Corrected the screen session naming to avoid issues with spaces and updated the log file path for better organization.
72 lines
2.5 KiB
YAML
72 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
|