添加 Gitea Actions 部署工作流
All checks were successful
Deploy to Server / deploy (push) Successful in 19s

- 创建 deploy.yml 工作流文件,支持自动部署到宿主机
- 使用 runs-on: host 在宿主机上运行
- 自动同步文件、安装依赖并重启 PM2 应用
- 添加部署说明文档
This commit is contained in:
ethan.chen
2026-01-09 10:28:03 +08:00
parent b33ac37720
commit 9bcfbe0113
2 changed files with 89 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
# Gitea Actions 部署配置说明
## 前提条件
- Gitea Runner 已配置为 `self-hosted` 模式,直接在宿主机上运行
- 宿主机上已安装 `bun``pm2`
- Runner 用户有权限访问 `/home/score-backend` 目录
## 工作流说明
- **触发条件**:
- 推送到 `dev``main` 分支时自动触发
- 也可以手动触发workflow_dispatch
- **部署步骤**:
1. 检出代码到 runner 工作目录
2. 使用 rsync 同步文件到 `/home/score-backend`(排除不需要的文件)
3. 在目标目录执行 `bun install` 安装依赖
4. 使用 `pm2 restart media-backend` 重启应用(如果应用不存在则启动)
## 文件排除规则
以下文件/目录不会被同步到服务器:
- `.git` - Git 仓库文件
- `node_modules` - 依赖包(会在服务器上重新安装)
- `.DS_Store` - macOS 系统文件
- `*.db` - 数据库文件
- `bun.lockb` - Bun 锁文件
- `.env` / `.env.local` - 环境变量文件(保留服务器上的配置)
- `.gitea` - Gitea 工作流文件
## PM2 配置
如果 PM2 中还没有 `media-backend` 应用,工作流会自动创建。你也可以手动配置:
```bash
cd /home/score-backend
pm2 start main.ts --name media-backend
pm2 save
pm2 startup # 设置开机自启
```
## 注意事项
- 确保 Runner 用户有写入 `/home/score-backend` 的权限
- 确保环境变量在服务器上已正确配置(不会覆盖 `.env` 文件)
- 数据库文件不会被覆盖,确保数据安全

View File

@@ -0,0 +1,42 @@
name: Deploy to Server
on:
push:
branches:
- dev
- main
workflow_dispatch:
jobs:
deploy:
runs-on: host
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Copy files to deployment directory
run: |
# 创建目标目录(如果不存在)
mkdir -p /home/score-backend
# 使用 rsync 同步文件(排除不需要的文件)
rsync -av \
--exclude='.git' \
--exclude='node_modules' \
--exclude='.DS_Store' \
--exclude='*.db' \
--exclude='bun.lockb' \
--exclude='.env' \
--exclude='.env.local' \
--exclude='.gitea' \
./ /home/score-backend/
- name: Install dependencies
working-directory: /home/score-backend
run: |
bun install
- name: Restart PM2 application
run: |
cd /home/score-backend
pm2 restart media-backend || pm2 start main.ts --name media-backend