diff --git a/skill/gitea/create-runner.md b/skill/gitea/create-runner.md index 7edf6b1..2ce1d5e 100644 --- a/skill/gitea/create-runner.md +++ b/skill/gitea/create-runner.md @@ -224,6 +224,45 @@ EOF # gitea-create-runner all "wibnIxvgeyYj3D7d53VTQvNxv0UVqArBwAtPFBWD" ``` +## 🔄 恢复离线 Runner + +**场景**:Runner 在 Gitea 服务器上被删除,但本地配置文件仍在。需要重新注册并上线。 + +**快速恢复命令**(针对 runner-Mac-mini4-host): + +```bash +cd ~/.config/gitea/runners/runner-Mac-mini4-host + +# 停止旧进程 +if [ -f pid ]; then kill $(cat pid) 2>/dev/null || true; fi + +# 加载配置并重新注册 +source ~/.config/gitea/config.env + +# 获取令牌(需要 jq) +token=$(curl -s -H "Authorization: token $GITEA_TOKEN" \ + "${GITEA_URL}/api/v1/admin/runners/registration-token" | jq -r '.token') + +# 生成标签 +OS=$(uname -s); ARCH=$(uname -m) +case "$OS" in Darwin) os="macOS";; Linux) os="ubuntu";; *) os="unknown";; esac +case "$ARCH" in arm64|aarch64) arch="ARM64";; x86_64) arch="x64";; *) arch="unknown";; esac +labels="self-hosted:host,${os}:host,${arch}:host,$(echo "${OS}-${ARCH}" | tr '[:upper:]' '[:lower:]'):host" + +# 重新注册并启动 +act_runner register --config config.yaml --instance "$GITEA_URL" \ + --token "$token" --name "runner-Mac-mini4-host" --labels "$labels" --no-interactive + +nohup act_runner daemon --config config.yaml > runner.log 2>&1 & +echo $! > pid +echo "✅ Runner 恢复完成 (PID: $(cat pid))" +``` + +**说明**: +- 确保 `config.yaml` 中的 `labels:` 配置为空(`labels: []`),注册时会使用命令行参数 +- 如果全局令牌权限不足,需要获取组织令牌(参考 runner-management.md) +- 恢复后 runner 会获得新的 ID,但名称和 labels 保持不变 + ### 方法三:完整脚本 如果你需要更多自定义选项,可以使用下面的完整脚本: