Skip to content

Improvement: retryable release publishing#634

Draft
krzysztof-causalens wants to merge 4 commits into
masterfrom
codex/npm-release-recovery
Draft

Improvement: retryable release publishing#634
krzysztof-causalens wants to merge 4 commits into
masterfrom
codex/npm-release-recovery

Conversation

@krzysztof-causalens
Copy link
Copy Markdown
Collaborator

@krzysztof-causalens krzysztof-causalens commented May 22, 2026

Motivation and Context

The release workflow currently publishes packages before it pushes the version bump commit and moves the release tag. If publishing partially succeeds and the later git step fails, retries can hit already-published PyPI or npm artifacts and fail again.

This PR makes the tag-triggered release path safer to retry while keeping the normal "push a version tag" workflow.

Implementation Description

The release workflow is split into a prepare phase and a publish phase. The prepare phase finds the exact remote branch head that the release tag points to, creates the version bump commit, verifies the branch has not moved, pushes the commit, and retargets the tag before any registry publish starts.

The publish phase checks out that prepared release commit and publishes artifacts with idempotent behavior: PyPI uses poetry publish --skip-existing, npm uses lerna publish from-package without --force-publish, and docs upload skips existing versioned artifacts. A completed GitHub release is treated as the terminal marker, so reruns do not duplicate publishing or Slack once the release already exists.

No package changelog entry is included because this only changes release infrastructure.

Any new dependencies Introduced

None.

How Has This Been Tested?

  • Parsed .github/workflows/release.yml as YAML.
  • Parsed the Prepare release commit bash block with bash -n.
  • Ran git diff --check.
  • Ran make -n publish-python publish-npm.
  • Ran poetry check for the root project, packages/dara-core, packages/dara-components, and packages/create-dara-app.
  • Ran poetry run python -m py_compile tooling/scripts/docs-upload.py.

PR Checklist:

  • I have implemented all requirements? (see JIRA, project documentation).
  • I am not affecting someone else's work, If I am, they are included as a reviewer.
  • I have added relevant tests (unit, integration or regression).
  • I have added comments to all the bits that are hard to follow.
  • I have added/updated Documentation.
  • I have updated the appropriate changelog with a line for my changes.

Screenshots (if appropriate):

N/A

@krzysztof-causalens krzysztof-causalens changed the title Fix: Recover npm release publishing Build:1.27.0 May 22, 2026
@krzysztof-causalens krzysztof-causalens changed the title Build:1.27.0 Build:1.27.0 retryable release publishing May 22, 2026
@krzysztof-causalens krzysztof-causalens changed the title Build:1.27.0 retryable release publishing Improvement: retryable release publishing May 22, 2026
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