Skip to content

Publish dry-run gate fails lockstep releases: untouched packages have no CHANGELOG entry for the new version #439

Description

@MarkOSullivan94

Summary

The v0.0.18-beta publish run (29596536544) failed at the very first job in the chain — publish_clerk_backend_api — during Publish - dry run:

Package validation found the following potential issue:
* .../packages/clerk_backend_api/CHANGELOG.md doesn't mention current version (0.0.18-beta).
  Consider updating it with notes on this version prior to publication.

Package has 1 warning and 1 hint.
Process completed with exit code 65

Because the jobs chain via needs:, publish_clerk_auth, publish_clerk_flutter, and the GitHub Release were all skipped. Nothing published.

Why this happens

Releases are versioned in lockstep: every package gets the new version number even when its code hasn't changed. When a package is untouched, no changelog entry is written for it — but dart pub publish --dry-run warns when CHANGELOG.md doesn't mention the version being published, and the reusable workflow we use (dart-lang/setup-dart/.github/workflows/publish.yml@v1) hard-fails its dry-run step on any warning (exit 65), with no input to tolerate or whitelist warnings.

So any release that bumps an untouched package fails the whole pipeline at the dry-run gate.

Options

  1. Add lockstep changelog entries (recommended). One entry per untouched package per release, e.g.:

    ## 0.0.18-beta
    
    - No functional changes; released in lockstep with the other packages.

    This is what consumers see on pub.dev — a published version that is absent from the changelog looks broken. Ideally the release tooling (tools/new_release / melos versioning) inserts these automatically so it can't be forgotten.

  2. Bypass the gate by replacing the reusable workflow with a custom job running dart pub publish --force. pub.dev's server does not reject a missing changelog mention (it's a client-side advisory) — but this drops all other pre-publish validation with it.

Practical note

The current tags point at the existing release commit, so changelog fixes require a new commit and deleting/re-pushing the four tags (melos run tag — push ordering fixed separately, see the >3-tags trigger issue).

🤖 Generated with Claude Code

Metadata

Metadata

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions