Some checks failed
Build and Deploy Spring Boot / build-and-deploy (push) Failing after 33s
Changed the command to start the application using `nohup` within a `screen` session to ensure it runs in the background and logs both stdout and stderr. This change helps in maintaining the process even if the terminal session is closed.
73 lines
2.5 KiB
YAML
73 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 -ls
|
|
screen -dmS ${{ vars.APP_NAME }} base -c 'nohup /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 2>&1 &'
|
|
screen -ls |