添加 Gitea Actions 部署工作流
All checks were successful
Deploy to Server / deploy (push) Successful in 19s
All checks were successful
Deploy to Server / deploy (push) Successful in 19s
- 创建 deploy.yml 工作流文件,支持自动部署到宿主机 - 使用 runs-on: host 在宿主机上运行 - 自动同步文件、安装依赖并重启 PM2 应用 - 添加部署说明文档
This commit is contained in:
47
.gitea/workflows/README.md
Normal file
47
.gitea/workflows/README.md
Normal 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` 文件)
|
||||
- 数据库文件不会被覆盖,确保数据安全
|
||||
42
.gitea/workflows/deploy.yml
Normal file
42
.gitea/workflows/deploy.yml
Normal 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
|
||||
Reference in New Issue
Block a user