Skip to content

ci: further improvements to release setup#1162

Merged
ffflorian merged 12 commits intomainfrom
claude/replace-lerna-setup-ONnAm
Mar 29, 2026
Merged

ci: further improvements to release setup#1162
ffflorian merged 12 commits intomainfrom
claude/replace-lerna-setup-ONnAm

Conversation

@ffflorian
Copy link
Copy Markdown
Owner

@ffflorian ffflorian commented Mar 29, 2026

Summary

  • Switch from @qiwi/multi-semantic-release to dhoulb/multi-semantic-release; add --ignore-private-packages flag
  • Set my-timezone's ntpclient dependency to * — the only intra-repo dependency; multi-semantic-release replaces it with the correct version at publish time
  • Use @ffflorian/semantic-release-config via extends in .releaserc.json
  • Fix yarn workspaces foreach infinite recursion by adding --exclude node-packages to all foreach scripts
  • Track CLAUDE.md symlink; exclude it from prettier via .prettierignore and lefthook
  • Add AGENTS.md rules: always use pinned versions in package.json; document * convention for intra-repo deps; run build and tests before committing

Test plan

  • CI passes (build, lint, test)
  • After merge to main, verify only changed packages are published
  • Verify private packages are never published

claude added 12 commits March 28, 2026 16:19
- Remove lerna; use `yarn workspaces foreach` for build/test orchestration
- Add @qiwi/multi-semantic-release for selective per-package publishing:
  only packages whose files changed are released on each merge
- Add semantic-release + @ffflorian/semantic-release-config; root .releaserc.json extends it
- Update CI: add fetch-depth: 0, GITHUB_TOKEN, remove manual chore skip
  (semantic-release handles release skipping via conventional commits)
- Remove NPM_TOKEN, OIDC is used for npm auth
- Add AGENTS.md rule: always use pinned versions in package.json
Yarn 4 requires --all (-A) when running foreach without a worktree
or recursive scope. Also update AGENTS.md to require running
build and tests after every change.
…te recursion

Root has 'test' and 'clean' scripts that call foreach again, causing
an infinite loop when --all (-A) includes the root workspace.
Replace @qiwi/multi-semantic-release with zx-bulk-release for
monorepo-aware per-package publishing. Update CI to use GH_TOKEN
and npm_config_yes=true as required by zx-bulk-release.
zx-bulk-release has its own versioning engine with no dependency on
semantic-release. Remove semantic-release, @semantic-release/changelog,
@semantic-release/git, @ffflorian/semantic-release-config, and .releaserc.json.
Replace zx-bulk-release with @qiwi/multi-semantic-release + semantic-release
+ @ffflorian/semantic-release-config. Restore .releaserc.json and
GITHUB_TOKEN in CI.
…dep versions

Replace @qiwi/multi-semantic-release with multi-semantic-release (dhoulb).
Change my-timezone's ntpclient dependency to * — multi-semantic-release
replaces it with the correct version at publish time.
Add --ignore-private-packages flag to release script.
… commit

Remove @semantic-release/git so packages no longer each create their
own commit. Instead, CI commits all changed package.json and CHANGELOG.md
files in a single 'chore(release): publish [skip ci]' commit after the
full release run. Also inline .releaserc.json plugins rather than using
extends, to make the config explicit.
@ffflorian ffflorian changed the title build: further improvements to release setup ci: further improvements to release setup Mar 29, 2026
@ffflorian ffflorian merged commit b12ab82 into main Mar 29, 2026
4 checks passed
@ffflorian ffflorian deleted the claude/replace-lerna-setup-ONnAm branch March 29, 2026 07:11
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