Skip to content

Add release script#7671

Open
arikfr wants to merge 1 commit intomasterfrom
release-script
Open

Add release script#7671
arikfr wants to merge 1 commit intomasterfrom
release-script

Conversation

@arikfr
Copy link
Copy Markdown
Member

@arikfr arikfr commented Mar 19, 2026

Summary

  • Adds bin/release — a single script that automates the full release process for both major and patch releases
  • Removes bin/release_manager.py and bin/get_changes.py which used an older RC-based workflow that no longer matches our process

Major release (bin/release major)

  1. Validates state (on master, clean worktree, branch/tag don't exist)
  2. Creates release branch (e.g., v26.3) from master
  3. Generates changelog from merged PRs, opens $EDITOR for review, writes to CHANGELOG.md
  4. Updates version in package.json, redash/__init__.py, pyproject.toml
  5. Commits and pushes
  6. Creates GitHub release with auto-generated notes
  7. Triggers Docker image build (preview-image.yml with dockerRepository=redash)
  8. Opens a PR (changelog/v26.3.0master) with just the CHANGELOG.md update

Patch release (bin/release patch)

Same flow but run from an existing release branch after cherry-picking fixes. Bumps the patch version and generates changelog from commits since the last tag.

Subcommands for testing individual steps

Each step is also available as a standalone subcommand:

bin/release check-major          # validate state
bin/release check-patch          # validate state
bin/release changelog ...        # generate entries to stdout
bin/release update-version ...   # update version files
bin/release update-changelog ... # generate + edit + write CHANGELOG.md
bin/release create-release ...   # create GitHub release
bin/release build-image ...      # trigger Docker build
bin/release changelog-pr ...     # PR changelog back to master

Test plan

  • bin/release major --dry-run — validates checks, shows planned steps
  • bin/release patch --dry-run — validates checks on release branch
  • bin/release check-major — correctly detects existing branch/tag
  • bin/release check-patch — correctly detects missing commits
  • bin/release changelog 26.3.0 --since-tag v25.8.0 — generates entries from PRs
  • bin/release update-version 99.9.9 — updates all three files correctly
  • bin/release build-image --ref v26.3 --dry-run — shows correct command
  • bin/release create-release v99.9.9 --target v26.3 --dry-run — shows correct command
  • bin/release changelog-pr 26.3.0 --release-branch v26.3 --dry-run — shows correct flow

🤖 Generated with Claude Code

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

No issues found across 3 files

New bin/release script that automates the full release process:
- Major releases: creates branch, generates changelog, updates version,
  creates GitHub release, triggers Docker build, opens changelog PR
- Patch releases: same flow on existing release branch
- Individual subcommands for testing each step independently

Removes bin/release_manager.py and bin/get_changes.py which used an
older RC-based release workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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