GiteaActionTest/.gitea/workflows/build-deploy.yaml
hxuanyu 1df87052bd
All checks were successful
Build and Deploy Spring Boot / build-and-deploy (push) Successful in 43s
Fix screen command syntax in build-deploy workflow
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.
2024-11-04 19:57:46 +08:00

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'