3.5 KiB
3.5 KiB
act_runner 配置参考
工作流 runs-on: ubuntu-latest;docker job 额外使用 catthehacker/ubuntu:act-22.04 容器(含 Docker CLI)。
构建镜像必须:挂载 Docker Socket
docker job 需要访问宿主机 Docker 引擎。在 runner 所在机器 的 config.yaml 中配置:
container:
options: -v /var/run/docker.sock:/var/run/docker.sock
valid_volumes:
- /var/run/docker.sock
推荐 job 镜像(含 Node + Docker CLI):
runner:
labels:
- "ubuntu-latest:docker://catthehacker/ubuntu:act-22.04"
- "ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04"
修改后 重启 runner(例如 docker restart <runner容器> 或重启 Gitea Runner 服务)。
验证
在 runner 宿主机执行:
docker info
ls -l /var/run/docker.sock
从零部署 runner(可选)
cd .gitea/act-runner
cp .env.example .env # 填入 Registration Token
docker compose up -d
常见错误
| 报错 | 原因 | 处理 |
|---|---|---|
docker: command not found |
job 容器无 Docker CLI | 工作流已指定 act 镜像;或 runner 改用 catthehacker/ubuntu |
Cannot connect to Docker daemon |
未挂载 docker.sock | 按上文修改 config.yaml 并重启 runner |
node not in PATH |
job 镜像无 Node | 标签映射改用 catthehacker/ubuntu:act-22.04 |
http: server gave HTTP response to HTTPS client 且 token 指向 127.0.0.1 |
Gitea 容器 registry 配置/反代错误 | 见下文「Registry 登录失败」 |
Registry 登录失败(127.0.0.1 / HTTP vs HTTPS)
若 docker login git.rc707blog.top 报错类似:
Get "https://127.0.0.1:xxxxx/v2/token?...": http: server gave HTTP response to HTTPS client
说明 Gitea 把 Docker 认证 token 地址 配成了本机内网地址,CI runner 访问不到。需在 Gitea 服务器 修复,而非改 workflow。
1. 检查 app.ini
[server]
ROOT_URL = https://git.rc707blog.top/
; 内部通信用,勿写成对外域名
LOCAL_ROOT_URL = http://127.0.0.1:3000/
[packages]
ENABLED = true
ROOT_URL 必须与浏览器访问 Gitea 的 HTTPS 外网地址 完全一致(含末尾 /)。
2. 反向代理必须转发 /v2 并带上头
Container Registry 固定使用根路径 /v2。Nginx 示例:
location / {
client_max_body_size 0;
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
关键:X-Forwarded-Proto: https 和正确的 Host: git.rc707blog.top。
3. 在 runner 宿主机验证(修复后)
curl -I https://git.rc707blog.top/v2/
echo "$REGISTRY_TOKEN" | docker login git.rc707blog.top -u rose_cat707 --password-stdin
应返回 401 Unauthorized(正常,表示 registry 可达)且 docker login 显示 Login Succeeded。
参考:Gitea 反向代理文档
Gitea Runner v0.6.x(个人 runner)
- 找到 runner 的配置文件或环境(安装目录 / docker compose)
- 确保 runner 进程能访问宿主机
/var/run/docker.sock - Runners 页标签含
ubuntu-latest且状态 空闲/在线
若使用 Gitea 网页注册的个人 runner(docker 模式),通常需在 runner 启动参数或 config.yaml 里加入 socket 挂载,具体路径取决于你的安装方式。