Skip to content

ci(release): manual trigger + always run GPR alongside NPM#837

Merged
theashraf merged 1 commit into
mainfrom
ci/release-workflow-dispatch-and-resilience
May 4, 2026
Merged

ci(release): manual trigger + always run GPR alongside NPM#837
theashraf merged 1 commit into
mainfrom
ci/release-workflow-dispatch-and-resilience

Conversation

@theashraf

Copy link
Copy Markdown
Member

Description

Follow-up to #836. Makes the GPR release more resilient and adds a manual escape hatch.

What changes

  1. workflow_dispatch: trigger added to release.yml so the release pipeline can be manually fired from the Actions tab.

  2. validate job is skipped on workflow_dispatch (main is already proven good — saves time during recovery).

  3. gpr-release no longer skips when its sibling fails. New gate:

    if: |
      always() &&
      github.repository == 'LottieFiles/dotlottie-web' &&
      needs.npm-release.result != 'cancelled' &&
      (
        needs.npm-release.outputs.published == 'true' ||
        needs.npm-release.result == 'failure' ||
        github.event_name == 'workflow_dispatch'
      )

Why

  • Currently, if npm-release errors midway, gpr-release is skipped via the needs: cascade — so the two registries can drift. We saw exactly this happen in the run that motivated fix(ci): scope GPR registry to @lottiefiles for publish only #836.
  • There was also no way to manually re-run gpr-release against the current main without authoring a fake changeset just to flip published == 'true'.

Behavior matrix

Trigger npm-release gpr-release jsr-release
Push to main, version PR merged, npm OK runs, published='true' runs ✅ runs ✅
Push to main, no version bumps (changeset PR update) runs, published='false' skips ✅ skips ✅
Push to main, npm publish fails fails runs ✅ skips (cascade)
Push to main, run cancelled cancelled skips ✅ skips
workflow_dispatch skipped (validate gate) runs ✅ skips

pnpm changeset publish is idempotent against the registry — packages whose version already exists on GPR are silently skipped. So running on workflow_dispatch or after a partial npm failure is safe.

Recovery plan

After this merges, trigger the workflow manually from the Actions tab to publish 0.50.6 (and any earlier missed versions) to GPR — no fresh changeset needed.

Package(s) affected

  • @lottiefiles/dotlottie-web (core)
  • @lottiefiles/dotlottie-react
  • @lottiefiles/dotlottie-vue
  • @lottiefiles/dotlottie-svelte
  • @lottiefiles/dotlottie-solid
  • @lottiefiles/dotlottie-wc

(CI-only change — no package code touched, no changeset needed.)

Type of change

  • Bug fix (non-breaking)
  • New feature (non-breaking)
  • Breaking change
  • Chore (build, CI, docs, refactor)

Checklist

  • Changes have been tested locally (actionlint clean; condition matrix walked)
  • Tests have been added or updated (n/a — workflow logic; will validate on first auto run + manual dispatch)
  • Changeset has been added (n/a — CI-only)

Make the release workflow more resilient by ensuring GPR publishes
stay consistent with NPM, even when the NPM job fails partway, and
add a manual trigger so missed publishes can be recovered without
crafting throwaway changesets.

Changes:
- Add workflow_dispatch trigger to the workflow
- Skip the validate job on workflow_dispatch (main is already validated)
- Run gpr-release whenever NPM published, NPM failed, or the run was
  manually dispatched. Cancellation still propagates.

pnpm changeset publish is idempotent against the registry, so running
it during recovery or after a partial NPM failure is safe — versions
already on GPR are skipped.
@changeset-bot

changeset-bot Bot commented May 4, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: ce6afd1

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size Loading time (3g) Running time (snapdragon) Total time
@lottiefiles/dotlottie-web 26.91 KB (0%) 539 ms (0%) 16 ms (+35% 🔺) 554 ms
@lottiefiles/dotlottie-web WASM 484.83 KB (0%) 9.7 s (0%) 0 ms (+100% 🔺) 9.7 s
@lottiefiles/dotlottie-react 28.24 KB (0%) 565 ms (0%) 26 ms (+7.76% 🔺) 591 ms
@lottiefiles/dotlottie-vue 35.31 KB (0%) 707 ms (0%) 77 ms (+271.56% 🔺) 783 ms
@lottiefiles/dotlottie-wc 32.85 KB (0%) 657 ms (0%) 70 ms (+59.18% 🔺) 727 ms
@lottiefiles/dotlottie-svelte 40.85 KB (0%) 817 ms (0%) 14 ms (-49.28% 🔽) 831 ms
@lottiefiles/dotlottie-solid 33.63 KB (0%) 673 ms (0%) 16 ms (-52% 🔽) 688 ms

@theashraf theashraf merged commit 0d85582 into main May 4, 2026
8 checks passed
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.

1 participant