Skip to content

ci(readme): Sync README 改为通过 bot PR 同步,适配受保护的 main - #30

Merged
xiaoyumuxi merged 1 commit into
mainfrom
ci/sync-readme-via-pr
Oct 26, 2026
Merged

xiaoyumuxi merged 1 commit into
mainfrom
ci/sync-readme-via-pr

Conversation

@xiaoyumuxi

Copy link
Copy Markdown
Collaborator

Sync README 在 #25、#26、#28 之后的运行都失败了:仓库规则集「Only owners merge main」禁止直接推送 main,工作流最后一步 git push origin HEAD:main 被拒绝(GH013),README 总览因此落后于索引(#29 里手工补过一次)。

改动

  • .github/workflows/sync-readme.yml:不再推送 main,改为和 Track plugin releases 一致的 bot PR 流程。
    • 重新生成 README 后,如果有变化:提交到 bot/sync-readme,push --force,已有打开的 PR 就更新标题和描述,否则新开 PR。
    • README 已经一致:直接结束;如果还有上一轮没人合并的 bot/sync-readme PR,就关闭它并删除分支。
    • 权限改为 contents: write + pull-requests: write;令牌用 secrets.STORE_BOT_TOKEN || github.token,与追踪工作流相同。
    • 新增 if: github.ref == 'refs/heads/main',手动运行时不会在功能分支上渲染并开 PR。
    • 合并 bot PR 会再触发一次工作流,此时已经一致,所以不会循环。
  • CONTRIBUTING.md:两处说明改为“开 bot/sync-readme PR 同步”。
  • docs/maintainers.md:新增“自动同步 README 总览”一节:流程、需要的仓库设置、同步 PR 只应包含 README.md。

验证

  • actionlint .github/workflows/sync-readme.yml 无告警;node scripts/render-readme.mjs --check 通过;node --test scripts/*.test.mjs 46 个通过。
  • 工作流本身只能在 main 上运行,合并后需要在 Actions 里手动运行一次 Sync README,确认它能创建 bot PR(或在已一致时直接结束)。

注意

  • 仓库设置里“Allow GitHub Actions to create and approve pull requests”已开启,不需要改设置。
  • 目前没有配置 STORE_BOT_TOKEN(gh secret list 为空),所以 bot PR 不会触发 Validate index,合并前需要手动运行一次检查,与追踪新版本的 PR 一样。
  • 代价:每次索引更新合并后,多出一个需要人合并的 README 同步 PR。如果觉得多余,可以后续让 Track plugin releases 在同一个提交里一并重新生成 README。

main 受保护规则「Only owners merge main」会拒绝工作流直接推送(GH013),
#25、#26、#28 之后的 Sync README 都因此失败,README 总览落后于索引。
改为和 Track plugin releases 一致:提交到 bot/sync-readme 分支并开或更新一个 PR;
总览已经一致时关闭上一轮遗留的同步 PR。
@xiaoyumuxi
xiaoyumuxi merged commit 3d0ff51 into main Oct 26, 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