githubcheck

package
v1.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package githubcheck 通过 GitHub API 查询某个 Runner 是否已在 GitHub 上登记, 并在从本工具删除 Runner 时把它从 GitHub 一并注销。

凭据只来自 Manager 侧的凭据目录(config/tokens/<runner name>,可选 PAT), 没有就跳过——本工具不保管也不要求这个凭据。

凭据不放在 Runner 目录下:容器模式会把那个目录整个挂进 Runner 容器,Job 读得到。 详见 internal/secrets。留在旧位置的 PAT 由 secrets.Store 在每次读取前搬走。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(cfg *config.Config, store *secrets.Store)

Run 查询每个 runner 在 GitHub 上的状态,结果写入 .github_status.json。

两件事,两种前提:「是否已登记」要 PAT,没有就不查;「目标仓库是否公开」 匿名也能查,因为绝大多数部署不配 PAT,而它们正是最需要那个提示的一批。 两件都没做的 runner 不写文件——界面上它仍是「从未检查」。

查不到答案(令牌过期、限流、网络不通)与「确实没登记」是两回事,分别写入: 前者记为未知并附上原因,后者才记为 false。把前者当成后者会在界面上给出 斩钉截铁的「未显示」,让人去排查一个并不存在的注册问题。

func TokenForRunner

func TokenForRunner(store *secrets.Store, runnerName, installDir string) string

TokenForRunner 读取该 Runner 的 PAT,不存在或为空则返回空串。

每次读取前先迁移一次,所以用户照旧文档把 PAT 放进 Runner 目录的,最迟一个 检查周期(约 5 分钟)后就会被移出那个会挂进容器的目录。

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, store *secrets.Store, 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 上还留着一个。

仍然要在删除安装目录之前调用:令牌本身已经不在那里了,但照旧文档放进去的那份 要先被搬出来才能用上,而搬运的源头就是那个目录。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL