fix: 修正 Gitea Runner 标签配置并添加设置文档

## 修改内容
- 修正 act-runner 标签从 `rent-deploy:docker://node:18-alpine`
  改为 `self-hosted,rent-deploy` 以匹配工作流要求
- 添加 Gitea Runner 完整配置指南文档

## 配置说明
Runner 标签必须与 .gitea/workflows/deploy.yml 中的
`runs-on: [self-hosted, rent-deploy]` 完全匹配

## 后续步骤
服务器管理员需要:
1. 在 Gitea Web 界面获取 Registration Token
2. 设置环境变量 GITEA_RUNNER_TOKEN
3. 运行 docker-compose up -d act-runner
4. 验证 Runner 状态为 Online

详细步骤参见:deploy/docker/GITEA_RUNNER_SETUP.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 15:49:39 +08:00
parent 26ebb6f1d2
commit 7e87a13fab
2 changed files with 193 additions and 1 deletions
+192
View File
@@ -0,0 +1,192 @@
# Gitea Runner 配置指南
## 前提条件
- Gitea 已通过 Docker 部署并运行
- 有服务器 SSH 访问权限
- Docker 和 Docker Compose 已安装
## 配置步骤
### 1. 获取 Runner Registration Token
1. 登录 Gitea Web 界面(http://your-server:3002
2. 进入仓库:`rent` 项目
3. 点击 **Settings****Actions****Runners**
4. 点击 **"Create new Runner"** 按钮
5. 复制显示的 **Registration Token**(类似:`abcd1234efgh5678ijkl`
### 2. 在服务器上设置环境变量
SSH 登录到服务器后,编辑环境变量文件:
```bash
# 进入 docker 部署目录
cd /path/to/deploy/docker
# 创建或编辑 .env 文件
nano .env
```
添加以下内容(替换为实际的 Token):
```bash
GITEA_RUNNER_TOKEN=your_actual_registration_token_here
```
保存并退出(Ctrl+O, Enter, Ctrl+X
### 3. 启动 Gitea Runner
```bash
# 确保在 docker-compose.gitea.yml 所在目录
cd /path/to/deploy/docker
# 启动 Runner(如果 Gitea 已运行,只启动 runner
docker-compose -f docker-compose.gitea.yml up -d act-runner
# 或者重启整个 Gitea 服务
docker-compose -f docker-compose.gitea.yml up -d
```
### 4. 验证 Runner 状态
#### 检查容器运行状态
```bash
docker ps | grep rent-act-runner
```
应该看到类似输出:
```
CONTAINER ID IMAGE STATUS PORTS NAMES
abc123def456 gitea/act_runner:latest Up 2 minutes rent-act-runner
```
#### 查看 Runner 日志
```bash
docker logs rent-act-runner
```
成功的日志应该包含:
```
Runner registered successfully
Labels: self-hosted,rent-deploy
```
#### 在 Gitea Web 界面验证
1. 返回 **Settings****Actions****Runners**
2. 应该看到 `rent-deploy-runner` 状态为 **Online**
3. 标签显示为 `self-hosted, rent-deploy`
### 5. 测试 CI/CD
推送代码到 `test` 分支触发工作流:
```bash
# 在本地开发机器
git checkout test
git merge dev
git push origin test
```
在 Gitea Web 界面查看 Actions 执行情况:
- 仓库 → Actions → 查看工作流运行状态
## 常见问题
### Runner 状态显示 Offline
**原因**
- Token 不正确
- Runner 容器未启动
- 网络连接问题
**解决**
```bash
# 查看日志
docker logs rent-act-runner
# 重新注册(先停止并删除旧容器)
docker-compose -f docker-compose.gitea.yml down act-runner
docker volume rm rent-act-runner_act_runner_data
docker-compose -f docker-compose.gitea.yml up -d act-runner
```
### Docker 权限错误
如果看到 "permission denied while trying to connect to the Docker daemon socket"
```bash
# 检查 /var/run/docker.sock 权限
ls -l /var/run/docker.sock
# 如果需要,调整权限
sudo chmod 666 /var/run/docker.sock
```
### 重新配置 Runner
```bash
# 停止 Runner
docker-compose -f docker-compose.gitea.yml stop act-runner
# 删除 Runner 数据(会清除注册信息)
docker volume rm docker_act_runner_data
# 更新环境变量中的 Token
nano .env
# 重新启动
docker-compose -f docker-compose.gitea.yml up -d act-runner
```
### 查看实时日志
```bash
docker logs -f rent-act-runner
```
## 配置说明
### 环境变量
- `GITEA_INSTANCE_URL`: Gitea 实例地址(容器内网络地址)
- `GITEA_RUNNER_REGISTRATION_TOKEN`: 从 Gitea 获取的注册 Token
- `GITEA_RUNNER_NAME`: Runner 名称(可自定义)
- `GITEA_RUNNER_LABELS`: Runner 标签,必须包含 `self-hosted,rent-deploy`
### 卷挂载
- `/var/run/docker.sock`: 允许 Runner 使用宿主机 Docker(用于构建和部署)
- `act_runner_data:/data`: Runner 数据持久化
### 网络
Runner 必须与 Gitea 在同一 Docker 网络(`gitea`),以便通信。
## 安全建议
1. **不要将 Token 提交到 Git**
- Token 应该放在 `.env` 文件中
- 确保 `.env` 已添加到 `.gitignore`
2. **定期更新镜像**
```bash
docker-compose -f docker-compose.gitea.yml pull
docker-compose -f docker-compose.gitea.yml up -d
```
3. **限制 Runner 权限**
- 只在必要时挂载 Docker socket
- 考虑使用专用的部署用户
## 工作流触发分支
根据 `.gitea/workflows/deploy.yml` 配置:
- ✅ `prod` 分支 → 部署到生产环境
- ✅ `test` 分支 → 部署到测试环境
- ❌ `dev` 分支 → 不触发部署(仅代码推送)
## 参考资料
- [Gitea Actions 官方文档](https://docs.gitea.com/usage/actions/overview)
- [Act Runner 文档](https://gitea.com/gitea/act_runner)
+1 -1
View File
@@ -33,7 +33,7 @@ services:
# 注册后在 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
- GITEA_RUNNER_LABELS=self-hosted,rent-deploy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- act_runner_data:/data