Skip to content

chore(ci): 分发工作流按来源组织选用同步令牌 - #1

Merged
loong10k merged 2 commits into
mainfrom
chore/sync-token-selection
Sep 23, 2026
Merged

loong10k merged 2 commits into
mainfrom
chore/sync-token-selection

Conversation

@loong10k

Copy link
Copy Markdown
Contributor

将 dispatch-plugin-sync.yml 的令牌引用改为 secrets.FULL_STACK_SKILLS_SYNC_TOKEN || secrets.SKILLS_SYNC_TOKEN,并把守卫提示改为指向实际读取的令牌名。

带兜底链,因此在新 secret 配置前行为与现状完全一致。main 受规则集保护,故走 PR。

分发工作流改为 secrets.FULL_STACK_SKILLS_SYNC_TOKEN || secrets.SKILLS_SYNC_TOKEN:
优先使用按组织签发的令牌,未配置时回退到旧令牌。
守卫与状态提示同步改为指向实际读取的令牌名。
@loong10k

Copy link
Copy Markdown
Contributor Author

合并前置条件:请先验证新令牌再合并本 PR

不要在此验证完成前合并。 默认分支当前用 SKILLS_SYNC_TOKEN,它已验证可跨组织 dispatch 到 full-stack-plugins/*(run 于 2026-09-21T14:24:27Z,conclusion=success)。本 PR 会把生效令牌切换成尚未验证的 FULL_STACK_SKILLS_SYNC_TOKEN。

已实测的反例(aigc 侧)

full-aigc-skills/video-factory-skills 的默认分支现已生效 FULL_AIGC_SKILLS_SYNC_TOKEN,通过 workflow_dispatch 触发 notify-consumers.yml(run 35611794495,2026-09-21T14:23:10Z)后仍然失败:

gh: Resource not accessible by personal access token (HTTP 403)
{"message":"Resource not accessible by personal access token","status":"403"}

即新令牌缺少目标仓的 Contents 写权限——创建 repository_dispatch 要求对目标仓有写权限(该步之前的 Validate release identity 是 success,说明令牌存在且非空)。

若 full-stack 新令牌有同样问题,合并本 PR 会把一条正在工作的分发链打坏。

验证方式

在本仓触发一次 dispatch 并确认 success:

gh workflow run dispatch-plugin-sync.yml --repo full-stack-skills/codeguard-skills -f ref=v0.1.1
gh run list --repo full-stack-skills/codeguard-skills --workflow dispatch-plugin-sync.yml --limit 1

验证通过则可合并;若同样 403,应先修令牌权限,而不是合并。

令牌权限的正确范围

跨组织写需要令牌对目标组织(full-stack-plugins / full-aigc-plugins)具备 Contents: Read and write。注意 fine-grained PAT 只有一个 resource owner,因此以 full-aigc-skills 为 owner 签发的令牌永远无法写入 full-aigc-plugins;可行做法有两种:

  1. 以插件组织为 resource owner 签发 fine-grained PAT(Contents: RW + Pull requests: RW);
  2. 或改用具备 repo scope 的 classic PAT(可跨账号可访问的全部组织)。

一个命名误导

读技能库其实是匿名的:技能仓都是 public,且 skill_vendor.py 的 fetch_checkout 用全新 git init + git fetch、不注入任何凭据。所以这个令牌与"技能库"无关,它服务的是插件组织的写入。名为 FULL_*_SKILLS_SYNC_TOKEN 容易让人把权限授给错误的组织——若要改名,建议 FULL_AIGC_PLUGINS_SYNC_TOKEN / FULL_STACK_PLUGINS_SYNC_TOKEN。

@loong10k
loong10k merged commit 05f20ab into main Sep 23, 2026
1 check passed
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