-
Notifications
You must be signed in to change notification settings - Fork 0
70 lines (60 loc) · 2.1 KB
/
Copy pathdeploy.yml
File metadata and controls
70 lines (60 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
name: Spring Boot CI/CD - Graceful Restart
on:
push:
branches: [ "master" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
# 拉取项目代码
- name: Checkout
uses: actions/checkout@v4
# 安装 JDK
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: maven
# 编译打包
- name: Build with Maven
run: mvn clean package
# 创建待上传文件夹并复制文件
- name: Prepare files for upload
run: |
mkdir -p upload
cp entrance/target/entrance*.jar upload/
cp restart.sh upload/
# 上传文件到服务器
- name: Upload file via SSH
uses: appleboy/scp-action@v1
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
port: ${{ secrets.SERVER_PORT }}
key: ${{ secrets.SERVER_SSH_KEY }}
source: "upload/*"
target: ${{ secrets.SERVER_PROJECT_PATH }}
strip_components: 1
# 执行 restart.sh
- name: perform restart.sh
uses: appleboy/ssh-action@v1.1.0
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
port: ${{ secrets.SERVER_PORT }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
cd ${{ secrets.SERVER_PROJECT_PATH }}
chmod 755 restart.sh
# 获取最新 jar 文件名
LATEST_JAR=$(ls -t *.jar | head -n 1)
echo "最新 jar 包:$LATEST_JAR"
#获取端口号
PORT=$(grep -A 2 "server:" application-prod.yaml | grep "port:" | awk '{print $2}')
# 更新 APP_NAME、PROJECT_PATH 到 restart.sh 中
sed -i "s/^APP_NAME=.*/APP_NAME=\"$LATEST_JAR\"/" restart.sh
sed -i "s|^APP_PATH=.*|APP_PATH=\"${{ secrets.SERVER_PROJECT_PATH }}\"|" restart.sh
sed -i "s/^PORT=.*/PORT=$PORT/" restart.sh
echo "执行重启脚本..."
bash -l restart.sh