-
Notifications
You must be signed in to change notification settings - Fork 0
80 lines (65 loc) · 2.07 KB
/
deploy.yml
File metadata and controls
80 lines (65 loc) · 2.07 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
71
72
73
74
75
76
77
78
79
80
name: Deploy To Server
on:
workflow_dispatch:
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies and build
run: |
npm i
npm run build
cd release
npm i --omit=dev
cd ..
- name: Deploy to Server
uses: appleboy/scp-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT || 22 }}
source: "release"
target: ${{ secrets.DEPLOY_PATH }}
strip_components: 1
tar_tmp_path: /tmp/
- name: Execute remote deployment script
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT || 22 }}
script: |
#!/bin/bash
set -e # 失败时退出
source ~/.profile
echo $PATH
# 定义服务名称
SERVICE_NAME="extension"
# 检查 PM2 是否存在
if ! command -v pm2 &> /dev/null; then
echo "❌ PM2 未安装,请先安装 PM2: npm install -g pm2"
exit 1
fi
# 在程序目录启动
cd ${{ secrets.DEPLOY_PATH }}
# 检查服务是否存在
if pm2 show $SERVICE_NAME &> /dev/null; then
echo "🔄 服务 $SERVICE_NAME 正在重启..."
pm2 restart $SERVICE_NAME
else
echo "🆕 服务 $SERVICE_NAME 不存在,正在创建..."
pm2 start -n $SERVICE_NAME node -- dist/main.js
fi
# 保存 PM2 进程列表
pm2 save
echo "✅ 操作完成!"
echo "当前 PM2 服务列表:"
pm2 list