Documentation
¶
Overview ¶
Package githubcheck 通过 GitHub API 查询某个 Runner 是否已在 GitHub 上登记, 并在从本工具删除 Runner 时把它从 GitHub 一并注销。
凭据只来自各 Runner 目录下的 .github_check_token(可选 PAT),没有就跳过—— 本工具不保管也不要求这个凭据。
Index ¶
Constants ¶
View Source
const (
// RunnerTokenFile 为各 runner 目录下可选的 PAT 文件,用于 List / Delete runners API
RunnerTokenFile = ".github_check_token"
)
Variables ¶
This section is empty.
Functions ¶
func Run ¶
Run 对每个配置了 PAT 的 runner 查询它是否已在 GitHub 登记,结果写入 .github_status.json。
查不到答案(令牌过期、限流、网络不通)与「确实没登记」是两回事,分别写入: 前者记为未知并附上原因,后者才记为 false。把前者当成后者会在界面上给出 斩钉截铁的「未显示」,让人去排查一个并不存在的注册问题。
func TokenForRunner ¶
TokenForRunner 读取该 runner 目录下的 PAT,不存在或为空则返回空串
Types ¶
type DeregisterResult ¶
type DeregisterResult struct {
// Done 为 true 表示 GitHub 上已经没有这个 Runner 了(本次删除的,或本来就没有)
Done bool
// MessageKey / MessageArgs 描述结果,由调用方渲染。
//
// 这里刻意不给现成的句子。同一个结果有两个去向、两种语言要求:它既要拼进 API
// 响应(跟随请求语言),又要写进日志(固定英文,见 handler 的 i18n 说明)。
// 一个 string 字段服务不了两边——本包又够不着翻译表,因为那是 handler 那一侧
// 由 main 注入的。所以这里只回传「是什么事」,由拿得到语言的人去说成话。
MessageKey string
MessageArgs []any
}
DeregisterResult 说明一次注销尝试的结果。
func Deregister ¶
func Deregister(ctx context.Context, installDir, targetType, target, runnerName string) DeregisterResult
Deregister 把某个 Runner 从 GitHub 注销。
用该 Runner 目录下的 PAT 调 DELETE .../actions/runners/{id}。没有 PAT 就注销不了: GitHub 侧的删除需要 PAT 或一个新的 removal token,而 config.sh remove 也要 removal token, 二者本工具都拿不到。这种情况下如实说明,让人知道 GitHub 上还留着一个。
必须在删除安装目录之前调用——令牌就放在那个目录里。
Click to show internal directories.
Click to hide internal directories.