RELEASE.md
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:
docs/changelog/unreleased/<PR>.<category>.mdx.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.
| 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.
| 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. |
To publish a minor release from main:
main as the release branch, and provide the target version (e.g. 0.26.0).scripts/release.sh all to assemble pg_search/sql/unreleased/*.sql into pg_search--<prev>--<version>.sql, assemble docs/changelog/unreleased/*.mdx into docs/changelog/<version>.mdx, register the release in docs/docs.json, and remove the consumed fragments.workspace.package.version in Cargo.toml and synchronize Cargo.lock.main.v<version>, triggering downstream packaging and publishing workflows.x.y.x pointing at the release commit.main to the next development version (e.g., 0.27.0).To publish a beta release from any branch or commit:
version (e.g. 0.26.0-rc.0 or 0.25.6-rc.1), and check beta: true.pg_search/sql/unreleased/*.sql into pg_search--<prev>--<version>.sql while preserving the unreleased fragments.v<version> pointing directly to the release commit, without pushing commits to the release branch.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:
0.25.x) as the release branch, and provide the patch version (e.g. 0.25.5).pg_search--<prev>--<version>.sql and docs/changelog/<version>.mdx.Cargo.toml and synchronize Cargo.lock on the stable branch.v<version>, and publish the GitHub release.main: Check out main, copy the assembled SQL script and changelog page, update docs/docs.json, delete the consumed fragments from main, and push the sync commit to main.paradedb/paradedb-enterprise by following the instructions in the repository's RELEASE.md file.That's it! Go for a walk, you deserve it.