feat: 替换 GitLab 为 Gitea + Act Runner

- 删除 .gitlab-ci.yml
- 新增 .gitea/workflows/deploy.yml (Gitea Actions 工作流)
- 新增 deploy/docker/docker-compose.gitea.yml (Gitea + Act Runner)
- 更新 scripts/setup-server.sh 初始化脚本
- 更新 deploy/README.md 部署文档
- 更新 Makefile 新增 gitea-* 命令
- 更新 .env.example 新增 GITEA_RUNNER_TOKEN

Gitea 内存占用约 100MB,适合 4GB 小内存服务器

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 20:01:52 +08:00
parent bcf16fe53d
commit 501adf7819
7 changed files with 236 additions and 206 deletions
+40 -34
View File
@@ -107,66 +107,72 @@ make test-deploy
---
## 二、GitLab CI/CD 自动化
## 二、Gitea + Act Runner 自动化
> Gitea 内存占用约 100MB,适合 4GB 小内存服务器。
### 前提条件
- 服务器已运行初始化脚本
- 代码已推送到 GitLab 仓库
- 服务器已运行初始化脚本Gitea 和 Act Runner 已自动启动)
- Gitea 已完成初始配置
### 第 1 步:安装 GitLab Runner
### 第 1 步:配置 Gitea
首次初始化已自动启动 Gitea,访问 `http://服务器IP:3002` 完成:
1. 设置管理员账号密码
2. 创建仓库 `rent-platform`
### 第 2 步:注册 Act Runner
1. Gitea → **Settings → Actions → Runners → Create new Runner**
2. 复制 Registration Token
3. 编辑 `.env` 填入 token
```bash
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt install gitlab-runner
vi deploy/docker/.env
# 将 GITEA_RUNNER_TOKEN=change_me 改为真实 token
```
### 第 2 步:注册 Runner
1. GitLab → **Settings → CI/CD → Runners** → 复制 token
2. 在服务器执行:
4. 重启 Runner
```bash
sudo gitlab-runner register
docker compose -f deploy/docker/docker-compose.gitea.yml restart act-runner
```
| 项目 | 值 |
|------|------|
| GitLab URL | `http://你的GitLab地址/` |
| Token | 从页面复制 |
| Description | `rent-deploy-runner` |
| Tags | `rent-deploy` |
| Executor | `shell` |
### 第 3 步:配置 Runner 权限
5. 验证 Runner 状态:
```bash
sudo usermod -aG docker gitlab-runner
sudo -u gitlab-runner npm install -g pnpm
docker logs rent-act-runner
```
### 第 4 步:配置 CI/CD 变量
在 Gitea → **Settings → Actions → Runners** 页面应能看到 `rent-deploy-runner` 已注册并在线。
GitLab → **Settings → CI/CD → Variables**
### 第 3 步:推送代码到 Gitea
| 变量名 | 说明 | Masked |
|--------|------|--------|
| `PROD_DB_PASSWORD` | 生产数据库密码 | ✅ |
| `PROD_JWT_SECRET` | 生产 JWT 密钥 | ✅ |
| `TEST_DB_PASSWORD` | 测试数据库密码 | ✅ |
| `TEST_JWT_SECRET` | 测试 JWT 密钥 | ✅ |
```bash
# 添加 Gitea 远程仓库
git remote add gitea http://服务器IP:3002/用户名/rent-platform.git
### 第 5 步:推送代码触发部署
# 推送分支
git push gitea master
git push gitea test
git push gitea prod
```
### 第 4 步:自动部署触发
```bash
# 推送 test 分支 → 自动部署测试环境
git push origin test
git push gitea test
# 推送 prod 分支 → 自动部署生产环境
git push origin prod
git push gitea prod
```
流水线:install → build(并行构建 4 个应用)→ deploy
流水线:install → build → deploy
在 Gitea → **仓库 → Actions** 页面查看实时日志。
---
+3
View File
@@ -5,3 +5,6 @@ PROD_JWT_SECRET=change_me_in_production
# ===== 测试环境 =====
TEST_DB_PASSWORD=change_me_in_test
TEST_JWT_SECRET=change_me_in_test
# ===== Gitea Act Runner =====
GITEA_RUNNER_TOKEN=change_me
+49
View File
@@ -0,0 +1,49 @@
version: '3.8'
services:
gitea:
image: gitea/gitea:latest
container_name: rent-gitea
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__server__ROOT_URL=http://localhost:3002/
- GITEA__server__HTTP_PORT=3000
- GITEA__server__SSH_PORT=2222
- GITEA__server__SSH_LISTEN_PORT=2222
ports:
- "3002:3000"
- "2222:2222"
volumes:
- gitea_data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- gitea
act-runner:
image: gitea/act_runner:latest
container_name: rent-act-runner
restart: always
depends_on:
- gitea
environment:
- GITEA_INSTANCE_URL=http://gitea:3000
# 注册后在 Gitea Web 界面获取 token,填入下面配置
- GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_TOKEN:-change_me}
- GITEA_RUNNER_NAME=rent-deploy-runner
- GITEA_RUNNER_LABELS=rent-deploy:docker://node:18-alpine
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- act_runner_data:/data
networks:
- gitea
volumes:
gitea_data:
act_runner_data:
networks:
gitea:
name: gitea