Skip to content

fix(ci): changeset Version PR 权限 + tools@0.2.0-beta.1 - #75

Closed
cursor[bot] wants to merge 2 commits into
mainfrom
cursor/bc-c8075b08-5349-40f0-8f40-0044dc376d80-be62
Closed

fix(ci): changeset Version PR 权限 + tools@0.2.0-beta.1#75
cursor[bot] wants to merge 2 commits into
mainfrom
cursor/bc-c8075b08-5349-40f0-8f40-0044dc376d80-be62

Conversation

@cursor

@cursor cursor Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

changeset-release @ d37f166 / 2d7f763(合入 #74 / #73)失败:version bump 与 changeset-release/main 推送成功,但创建 Version PR 时报:

HttpError: GitHub Actions is not permitted to create or approve pull requests

BLOCKER — 发版门禁(非代码逻辑,属 CI 契约)

仓库/组织关闭了 Actions「Allow GitHub Actions to create and approve pull requests」时,仅声明 pull-requests: write + secrets.GITHUB_TOKEN 仍无法开 PR。此前成功 run 走的是 publish 路径(无待开 Version PR),故未暴露。

修复:

  • workflow:GITHUB_TOKEN: ${{ secrets.CHANGESETS_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
  • docs/dev/npm-publish.md:写明勾选 Actions 选项 配置 PAT Secret
  • 本 PR 直接带上 Version 内容:@sfmc-bds/tools0.2.0-beta.1 + pre.json(合入后应走 publish,不再卡在开 PR)

MAJOR — LSP(listPendingChangesetFiles

pre mode 下已消费的 .md 会留在磁盘直到 pre exit;原实现把它们算作「待消费」,与 @changesetsgetRelevantChangesets 契约不一致,会导致 changeset-ensure 误跳过交互添加。

修复: 排除 pre.json#changesets 中已记录的 id;单测覆盖。

审查笔记(#73/#74 残留,本 PR 未改)

级别 原则 说明
MINOR DRY db-server / qq-bridge 各有一份 project-root.ts(均已 DIP 到 resolveRuntimeRoot;跨包再抽共享收益小)
说明 pre.json#changesets 在下次 changeset version 时会被重写为「磁盘上仍存在的 .md id」——#74 手工恢复的历史 id 列表被冲掉是 changesets 预期行为,不影响 publish

Test plan

  • node --test tools/changeset-release.test.mjs
  • listPendingChangesetFiles()[](当前 pre 态)
  • 维护者:勾选 Actions「create and approve pull requests」 添加 Secret CHANGESETS_GITHUB_TOKEN
  • 合并本 PR 后 changeset-release 应 publish @sfmc-bds/tools@0.2.0-beta.1(而非再开 Version PR 失败)
Open in Web View Automation 

cursoragent and others added 2 commits July 25, 2026 05:34
changeset-release 在 version bump 后因仓库禁止 GITHUB_TOKEN 开 PR 失败。
改用 CHANGESETS_GITHUB_TOKEN(可选)并文档化 Actions 勾选要求;
同时落地 Version 内容(tools beta.1),并修正 listPendingChangesetFiles
在 pre mode 下误把已消费 .md 当待消费(LSP)。

Co-authored-by: Shiroha <Tanya7z@users.noreply.github.com>
MAJOR/LSP:fetch-depth:0 后 CI 仍默认 --from-existing 会收录全部已有
name@version;空 RELEASE_TAGS_STATE 被 push/gh-release 当缺失并全量扫描。
改为默认 HEAD~1 diff;releaseTagsStateKind 区分 missing/empty/present。

Co-authored-by: Shiroha <Tanya7z@users.noreply.github.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

审查结论(相对 #76

本 PR(#75)与并行补丁 #76 覆盖同一 push(main@2d7f763 / changeset-release 开 Version PR 失败)。

已对齐 / 建议合入路径

请优先合并 #76(已吸收本 PR 独有点):

  • CHANGESETS_GITHUB_TOKEN || GITHUB_TOKEN + Version PR 权限文档
  • listPendingChangesetFiles 排除 pre.json#changesets(MAJOR · LSP
  • tools @0.2.0-beta.1 Version 内容

#76 额外包含:

  • resolveReleaseTagEntries:空 .sfmc-release-tags.json 一律信任(MAJOR · LSP / DRY
  • tag-packages 取消 CI 强制 --from-existing(MAJOR · LSP
  • remote-controller project-root.ts(MINOR · DIP

本 PR 可关闭

合入 #76 后本 PR 可关闭,避免双头 version bump。

维护者仍需:勾选 Actions「create and approve pull requests」配置 CHANGESETS_GITHUB_TOKEN

View PR

Open in Web View Automation 

Sent by Cursor Automation: SFMC-Review

@Tanya7z Tanya7z closed this Jul 25, 2026
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.

2 participants