# 添加 Gitea Actions Runner 人工手顺 在 Windows 机器上手工部署一台宿主机模式(host)的 act_runner,注册到 。全程约 10 分钟。 ## 0. 前置条件 - Windows 10/11 x64 - 能访问 `https://gitea.docker.antior.cn/`(浏览器打开确认) - 一个 Gitea 账号: - 注册**实例级** runner 需要管理员权限 - 只给某个仓库/组织用,仓库 Owner 也可以(在仓库 `设置 → Actions → Runners` 页面操作) - 本手顺以安装目录 `C:\Users\<用户名>\Gitea_worker` 为例,可按需替换 ## 1. 获取注册令牌(二选一) **方式 A:Web 页面** - 实例级:右上角头像 → 站点管理 → Actions → Runners → 创建新 Runner,复制注册令牌 - 仓库级:仓库 → 设置 → Actions → Runners,同样位置复制 **方式 B:管理员 API** ```bash curl -X POST -H "Authorization: token <你的PAT>" \ https://gitea.docker.antior.cn/api/v1/admin/actions/runners/registration-token # 返回 {"token":"..."} ``` > 注册令牌一次性、有时效,注册时用掉即可,不需要保存。 ## 2. 下载 act_runner 到 找最新版本,下载 `gitea-runner-<版本>-windows-amd64.exe`,放入安装目录并重命名为 `act_runner.exe`: ```bash mkdir -p /c/Users/$USER/Gitea_worker && cd /c/Users/$USER/Gitea_worker curl -sSL -o act_runner.exe \ https://gitea.com/gitea/runner/releases/download/v2.1.0/gitea-runner-2.1.0-windows-amd64.exe ./act_runner.exe --version ``` ## 3. 注册 runner ```bash ./act_runner.exe register --no-interactive \ --instance https://gitea.docker.antior.cn/ \ --token <注册令牌> \ --name "$(hostname)-windows" \ --labels "windows-latest:host,windows:host,windows-amd64:host" ``` - 看到 `Runner registered successfully.` 即成功,目录下会生成 `.runner` 凭证文件 - **labels 说明**:`xxx:host` 表示直接在 Windows 宿主机上执行,不经过 Docker - 本机没装 Docker,workflow 里 `runs-on` 只能用这几个自定义标签 - 若之后装了 Docker Desktop,可追加 `ubuntu-latest:docker://node:22` 之类的容器标签(需重新注册) ## 4. 启动并验证 ```bash ./act_runner.exe daemon # 看到 "declare successfully" 说明已连上实例,Ctrl+C 先停掉 ``` 再到 Web 页面(站点管理 → Actions → Runners)确认状态为**在线**。 ## 5. 配置开机自启(二选一) **方式 A:计划任务(首选)** ```powershell schtasks /create /tn "GiteaActRunner" /sc onlogon /f ` /tr "wscript.exe \"C:\Users\<用户名>\Gitea_worker\run_hidden.vbs\"" ``` **方式 B:启动文件夹(方式 A 提示"拒绝访问"时用)** 在安装目录新建 `run_hidden.vbs`(隐藏窗口后台运行,日志写入 runner.log): ```vb Dim shell Set shell = CreateObject("WScript.Shell") shell.CurrentDirectory = "C:\Users\<用户名>\Gitea_worker" shell.Run "cmd /c act_runner.exe daemon >> runner.log 2>&1", 0, False ``` 然后把它复制到启动文件夹(`Win+R` 输入 `shell:startup` 打开): ``` %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\GiteaActRunner.vbs ``` 立即启动一次(双击 vbs,或 `wscript run_hidden.vbs`),确认任务管理器里出现 `act_runner.exe` 进程、Web 页面上 runner 在线。 ## 6. 日常使用 - **日志**:`<安装目录>\runner.log` - **任务工作目录**:默认在安装目录下自动创建(`work/`、`.cache/`),首个任务运行后出现 - **workflow 写法**:参考本仓库根目录 README 中的 prompt 模板和 [.gitea/workflows/build.yaml](../.gitea/workflows/build.yaml) ## 7. 卸载 1. 结束 `act_runner.exe` 进程 2. 删除自启项:计划任务 `GiteaActRunner` 或启动文件夹里的 `GiteaActRunner.vbs` 3. 删除安装目录 4. Web 页面(站点管理 → Actions → Runners)删除该 runner 记录 ## 常见问题 | 现象 | 原因 / 处理 | |---|---| | `schtasks` 提示"拒绝访问" | 组策略限制,改用方式 B(启动文件夹) | | workflow 一直排队不执行 | `runs-on` 标签与 runner labels 不匹配,改成 `windows-latest` | | 任务里 `docker`/`gcc`/`make` 找不到 | host 模式没有这些工具,见 README 的工具链清单 | | 注册时报令牌错误 | 注册令牌已过期或被用掉,重新生成一个 | | `actions/checkout` 步骤报 `github.com ... wsarecv` 连接失败 | runner 到 github.com 的网络不稳定(偶发)。处理:① 在 Actions 页面重跑该任务,多数情况重跑即成功;② 管理员可在服务端 `app.ini` 设 `[actions] DEFAULT_ACTIONS_URL` 指向可达镜像;③ workflow 里改用 `git clone https://x-access-token:${{ secrets.GITHUB_TOKEN }}@<实例域名>/${{ github.repository }}.git` 从实例拉代码,完全不依赖 github.com |