ci: further improvements to release setup#1162
Merged
Conversation
- 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@qiwi/multi-semantic-releaseto dhoulb/multi-semantic-release; add--ignore-private-packagesflagmy-timezone'sntpclientdependency to*— the only intra-repo dependency; multi-semantic-release replaces it with the correct version at publish time@ffflorian/semantic-release-configviaextendsin.releaserc.jsonyarn workspaces foreachinfinite recursion by adding--exclude node-packagesto all foreach scriptsCLAUDE.mdsymlink; exclude it from prettier via.prettierignoreand lefthookpackage.json; document*convention for intra-repo deps; run build and tests before committingTest plan
main, verify only changed packages are published