Skip to content

ci: resolve release dependency checks against in-repo packages - #1074

Merged
tilucasoli merged 1 commit into
mainfrom
ci/release-check-workspace-deps
Sep 29, 2026
Merged

tilucasoli merged 1 commit into
mainfrom
ci/release-check-workspace-deps

Conversation

@leoafarias

Copy link
Copy Markdown
Collaborator

Problem

Protocol / Release dependency check and Winds / Release dependency check resolve mix_protocol and mix_winds against the published pub.dev Mix, then analyze and test them. This blocks any PR that changes packages/mix together with the dependents that need the change. For example, #1072 adds BlurModifierMix.tileMode:

  • Without the matching mix_protocol codec update, the main test job fails, because mix_protocol checks each styler's field count against a fixed list.
  • With the update, the protocol release check fails, because tileMode does not exist in the published mix 2.2.0.

No version of that PR can pass both jobs. After such a change merges, main stays red on this job until Mix is released.

Change

In .github/workflows/test.yml, both release-dependency jobs now:

  • write a pubspec_overrides.yaml that points mix, mix_annotations, and (for winds) mix_protocol at the repository. Winds also gets one for its example. They still run a plain flutter pub get without Melos, then analyze and test the package on its own.
  • use flutter analyze --no-fatal-infos, matching melos run analyze:dart. Deprecations in unreleased Mix (for example feat(mix): deprecate styler convenience shorthands #1063) show up as infos in dependents.
  • remove the overrides before dart pub publish --dry-run, so the dry run still resolves the declared constraints (mix: ^2.2.0) against pub.dev.
  • skip the override step when the workflow is run manually (workflow_dispatch) with published_deps: true. That run checks against pub.dev only, which is the old behavior.

Where the published-dependency guarantee is enforced now

  • At publish time (blocking): publish.yml calls btwld/dart-actions. That workflow runs a plain flutter pub get (overrides are gitignored and never checked in), flutter test, and dart pub publish --dry-run, all before publishing. A dependent that needs unreleased Mix fails there and is not published.
  • Before tagging (on demand): run Test Workflow manually with published_deps enabled to get the old pub.dev-only check.
  • On every PR: the publish dry run still validates the archive and that the declared constraints resolve on pub.dev.

Examples / Published Mix is left as it is. Keeping the showcase working with published Mix is deliberate there.

Verification

  • actionlint .github/workflows/test.yml passes.
  • I simulated both jobs locally on a clean export of the feat(mix): support blur tileMode across core and protocol #1072 branch, with no Melos overrides:
    • mix_protocol: analysis passes (9 infos), 405 tests pass.
    • mix_winds: analysis passes with no issues, 824 tests pass.
    • Both resolve mix, mix_annotations, and mix_protocol from the repo paths.
  • dart pub publish --dry-run on mix_protocol without overrides: 0 warnings.

@github-actions github-actions Bot added the repo label Sep 29, 2026
@leoafarias
leoafarias added this pull request to stack #1075 September 29, 2026 04:13
@leoafarias leoafarias mentioned this pull request Sep 29, 2026
3 of 4 tasks

@tilucasoli tilucasoli left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM!

@tilucasoli
tilucasoli merged commit 4ddbc63 into main Sep 29, 2026
12 checks passed
@tilucasoli
tilucasoli deleted the ci/release-check-workspace-deps branch September 29, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants