Skip to content

feat: runsOn — self-hosted / macOS / Windows runners - #32

Merged
wangzhizhou merged 1 commit into
mainfrom
feat/runs-on
Nov 10, 2026
Merged

wangzhizhou merged 1 commit into
mainfrom
feat/runs-on

Conversation

@wangzhizhou

Copy link
Copy Markdown
Contributor

补齐 macOS/Windows 项目的执行环境。

  • 仓库画像新增 runsOn(字符串或 label 数组)。
  • App 模式下 dispatcher 不再在本机跑,而是 dispatch ai-run.yml(用 hub 的 GITHUB_TOKEN,org App token 无法 dispatch hub 工作流)。
  • ai-run.yml 在指定 label 上启动 → 签发目标组织 installation token → 克隆目标仓库 → 跑标准 runner。
  • 无匹配 runner 时任务保持排队(有意的:静默回退 ubuntu 会产出不可信结果),文档说明取消/补 runner。
  • ghapp-scan 增加 actions: write(只用于 dispatch)。
  • 62 个测试全绿;actionlint 通过。

…nners

macOS (Xcode) and Windows (MSVC) toolchains cannot run in a Linux container,
so the app dispatcher needs to place the job on the right runner:

- profile.runsOn (string or label array). When set, ghapp-scan does not run the
  task inline: it dispatches `ai-run.yml` (repo, issue, runs_on JSON) with the
  hub's own GITHUB_TOKEN — an org App token cannot dispatch hub workflows.
- ai-run.yml runs on `fromJSON(runs_on)`, mints the target org's installation
  token, clones the target into RUNNER_TEMP, and runs the standard runner.
- no matching runner -> the job stays queued on purpose (silently falling back
  to ubuntu would produce unverifiable results); documented.
- ghapp-scan gains `actions: write` for the dispatch call only.
- tests: runsOn normalisation (62 total).
@wangzhizhou
wangzhizhou merged commit 10933c6 into main Nov 10, 2026
2 checks passed
@wangzhizhou
wangzhizhou deleted the feat/runs-on branch November 10, 2026 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant