Contents
ParadeDB Release Process
We use a single branch, main, for our development. Features are built on separate branches and merged into main via pull requests.
ParadeDB uses a fragment-based workflow for release artifacts:
- PRs that introduce user-facing changes add a changelog fragment to
docs/changelog/unreleased/<PR>.<category>.mdx. - PRs that modify extension DDL/schema add a SQL migration fragment to
pg_search/sql/unreleased/<PR>.<description>.sql.
At release time, the Publish GitHub Release workflow automatically assembles these fragments into the versioned SQL upgrade script and changelog page.
Release Types
| Type | Description |
|---|---|
| Minor | Triggered from the main branch. Publishes x.y.0 and creates stable branch x.y.x. |
| Patch | Triggered from a stable branch (e.g., 0.25.x). Publishes x.y.z and syncs artifacts to main. |
| Beta (RC) | Marked with beta: true. Can be triggered from any branch/commit. Produces a tag like vX.Y.Z-rc.N without modifying the branch. |
Note: Minor and patch releases publish Docker images for all supported PostgreSQL major versions and prebuilt extension binaries for all supported platforms. Beta releases publish only the PostgreSQL 18 Docker image and the Debian 13 packages required to build it; the remaining prebuilt extension binaries are skipped.
Workflow Inputs
| Input | Type | Default | Description |
|---|---|---|---|
version |
string | "" |
Target release version in semver format (e.g., 1.2.3 or 1.2.3-rc.1 for beta releases). |
beta |
boolean | false |
If true, creates a beta release (e.g., vX.Y.Z-rc.N) and marks it as a pre-release in GitHub. |
Triggering a Release
Minor Releases
To publish a minor release from main:
- Go to Actions → Publish GitHub Release
- Click Run workflow, select
mainas the release branch, and provide the targetversion(e.g.0.26.0). - Click Run workflow to start the job.
- The workflow will automatically:
- Run
scripts/release.sh allto assemblepg_search/sql/unreleased/*.sqlintopg_search--<prev>--<version>.sql, assembledocs/changelog/unreleased/*.mdxintodocs/changelog/<version>.mdx, register the release indocs/docs.json, and remove the consumed fragments. - Bump
workspace.package.versioninCargo.tomland synchronizeCargo.lock. - Commit and push the release commit to
main. - Create the Git tag
v<version>, triggering downstream packaging and publishing workflows. - Create the stable branch
x.y.xpointing at the release commit. - Bump
mainto the next development version (e.g.,0.27.0).
- Run
Beta (RC) Releases
To publish a beta release from any branch or commit:
- Go to Actions → Publish GitHub Release
- Click Run workflow, select the desired branch or commit, provide the
version(e.g.0.26.0-rc.0or0.25.6-rc.1), and checkbeta: true. - Click Run workflow to start the job.
- The workflow will automatically:
- Assemble
pg_search/sql/unreleased/*.sqlintopg_search--<prev>--<version>.sqlwhile preserving the unreleased fragments. - Skip changelog and docs generation.
- Create and push the Git tag
v<version>pointing directly to the release commit, without pushing commits to the release branch.
- Assemble
Patch Releases
Fixes intended for a stable release are labeled with cherry-pick/<branch> (e.g. cherry-pick/0.25.x) on main and automatically backported via .github/workflows/cherry-pick.yml upon merge into the stable branch.
To publish a patch release from a stable branch:
- Go to Actions → Publish GitHub Release.
- Click Run workflow, select the stable branch (e.g.
0.25.x) as the release branch, and provide the patchversion(e.g.0.25.5). - The workflow will automatically:
- Assemble the unreleased fragments present on the stable branch into
pg_search--<prev>--<version>.sqlanddocs/changelog/<version>.mdx. - Bump
Cargo.tomland synchronizeCargo.lockon the stable branch. - Commit, tag
v<version>, and publish the GitHub release. - Sync to
main: Check outmain, copy the assembled SQL script and changelog page, updatedocs/docs.json, delete the consumed fragments frommain, and push the sync commit tomain.
- Assemble the unreleased fragments present on the stable branch into
Post-Release Steps
- Verify that the GitHub release and tag were created correctly and that all downstream packaging jobs completed successfully.
- Release
paradedb/paradedb-enterpriseby following the instructions in the repository’s RELEASE.md file.
That’s it! Go for a walk, you deserve it.