From 79b7c4163ab7cd5557c8ab2d13f15517048ed9c5 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 16:33:53 -0400 Subject: [PATCH 01/10] Prepare website for DocumentDB v1.0-RC1 --- .github/scripts/download_packages.sh | 17 ++++---- .github/workflows/continuous-integration.yml | 4 +- PACKAGE-INSTALL.md | 14 ++++--- app/lib/releaseInfo.ts | 36 ++++++++--------- app/services/articleService.ts | 32 ++++++++++----- tests/installSelection.test.ts | 14 +++---- tests/packageArticles.test.ts | 8 ++-- tests/packageInstall.test.ts | 41 +++++++++++--------- 8 files changed, 94 insertions(+), 72 deletions(-) diff --git a/.github/scripts/download_packages.sh b/.github/scripts/download_packages.sh index 3291c08..8be001c 100755 --- a/.github/scripts/download_packages.sh +++ b/.github/scripts/download_packages.sh @@ -88,22 +88,23 @@ if ! curl -fqs "https://api.github.com/repos/${REPO}/releases?per_page=100" > "$ exit 1 fi -# Select exactly one published release. Drafts and prereleases are skipped. +# Select exactly one published release. Drafts are always skipped. "latest" +# skips prereleases too; naming a prerelease tag opts in, so the repository an +# RC's install.sh points at can serve that RC. SELECTED_TAG=$(DOCUMENTDB_VERSION="$DOCUMENTDB_VERSION" python3 - "$RELEASES_JSON" <<'PY' import json, os, sys -releases = json.load(open(sys.argv[1])) -published = [r for r in releases if not r.get("draft") and not r.get("prerelease")] -if not published: - sys.exit("Error: no published releases found") - +releases = [r for r in json.load(open(sys.argv[1])) if not r.get("draft")] requested = os.environ.get("DOCUMENTDB_VERSION", "latest") if requested != "latest": - selected = next((r for r in published if r["tag_name"] == requested), None) + selected = next((r for r in releases if r["tag_name"] == requested), None) if selected is None: sys.exit(f"Error: Version {requested} not found in releases") else: - selected = published[0] + stable = [r for r in releases if not r.get("prerelease")] + if not stable: + sys.exit("Error: no published releases found") + selected = stable[0] print(selected["tag_name"]) PY diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 89f18f0..fee1ef0 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -96,9 +96,9 @@ jobs: run: | sudo apt-get update sudo apt-get install -y createrepo-c dpkg-dev rpm python3 - - name: Generate repository from v0.117-0 + - name: Generate repository from v1.0-RC1 env: - DOCUMENTDB_VERSION: v0.117-0 + DOCUMENTDB_VERSION: v1.0-RC1 run: .github/scripts/download_packages.sh - name: Verify release inventory and metadata run: python3 .github/scripts/verify_package_inventory.py diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 381076c..afc4bfd 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,6 +2,10 @@ Repository-backed installation commands for DocumentDB. +> The repository currently serves **v1.0-RC1**, a release candidate for DocumentDB 1.0. +> The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) +> remains available from its release assets. + ## What is published Starting with **v0.116-0**, DocumentDB ships a multi-package layout with a setup wizard and @@ -204,7 +208,7 @@ Before using this anywhere but a private machine: ```bash sudo documentdb-setup --status # gateway listener, service states, resolved paths -documentdb-gateway --version # DocumentDB version (0.117.0) +documentdb-gateway --version # DocumentDB version (1.0.0) dpkg -l | grep documentdb # or: rpm -qa | grep documentdb ``` @@ -434,7 +438,7 @@ three entry points: - `packaging/gateway/build_gateway_packages.sh` — wire-protocol gateway - `packaging/build_extra_packages.sh` — tools, common payload, `documentdb-N`, and meta package -The [v0.117 packaging guide](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md) +The [v1.0-RC1 packaging guide](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md) documents their required arguments, version formats, prerequisites, and accepted targets. PostgreSQL 15 remains extension-only for package-managed installs because the setup tools require PostgreSQL 16 or newer. @@ -449,9 +453,9 @@ they do not retain packages from older releases. Examples: ```text -ubuntu24.04-documentdb_0.117.0_all.deb -ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb -rhel9-postgresql18-documentdb-0.117.0-1.el9.x86_64.rpm +ubuntu24.04-documentdb_1.0.0_all.deb +ubuntu24.04-postgresql-18-documentdb_1.0-0_amd64.deb +rhel9-postgresql18-documentdb-1.0.0-1.el9.x86_64.rpm ``` For a full stack, pass the five packages for the selected PostgreSQL major to one command: diff --git a/app/lib/releaseInfo.ts b/app/lib/releaseInfo.ts index 2b5ac11..a1169da 100644 --- a/app/lib/releaseInfo.ts +++ b/app/lib/releaseInfo.ts @@ -12,23 +12,23 @@ import { useEffect, useState } from "react"; // after v0.116-0 had been published and mirrored. export type ReleaseInfo = { - /** Git tag of the mirrored release, e.g. "v0.117-0". */ + /** Git tag of the mirrored release, e.g. "v1.0-RC1". */ tagName: string; - /** Extension package version on DEB, e.g. "0.117-0". */ + /** Extension package version on DEB, e.g. "1.0-0". */ aptVersion: string; - /** Extension package version on RPM, e.g. "0.117.0-1.el9". */ + /** Extension package version on RPM, e.g. "1.0.0-1.el9". */ rpmVersion: string; /** - * Version of every non-extension package, e.g. "0.117.0". + * Version of every non-extension package, e.g. "1.0.0". * - * The extension keeps the control-file form (`0.117-0`) while the meta, + * The extension keeps the control-file form (`1.0-0`) while the meta, * per-major, gateway, tools and common packages use the flat dotted form. * Pinning examples MUST pick the right one for the package being pinned: - * `apt install documentdb-18=0.117-0` fails with "Version '0.117-0' for - * 'documentdb-18' was not found", because that package is `0.117.0`. + * `apt install documentdb-18=1.0-0` fails with "Version '1.0-0' for + * 'documentdb-18' was not found", because that package is `1.0.0`. */ metaVersion: string; - /** RPM form of the non-extension packages, e.g. "0.117.0-1". */ + /** RPM form of the non-extension packages, e.g. "1.0.0-1". */ metaRpmVersion: string; releaseUrl: string; assetNames: readonly string[]; @@ -36,12 +36,12 @@ export type ReleaseInfo = { // A reference release, not evidence of current repository availability. export const FALLBACK_RELEASE: ReleaseInfo = { - tagName: "v0.117-0", - aptVersion: "0.117-0", - rpmVersion: "0.117.0-1.el9", - metaVersion: "0.117.0", - metaRpmVersion: "0.117.0-1", - releaseUrl: "https://github.com/documentdb/documentdb/releases/tag/v0.117-0", + tagName: "v1.0-RC1", + aptVersion: "1.0-0", + rpmVersion: "1.0.0-1.el9", + metaVersion: "1.0.0", + metaRpmVersion: "1.0.0-1", + releaseUrl: "https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1", assetNames: [], }; @@ -80,14 +80,14 @@ export function parseReleaseInfo(payload: unknown): ReleaseInfo { } const raw = payload as RawReleaseInfo; const names = assetNamesOf(raw); - if (typeof raw.tag_name !== "string" || !/^v\d+\.\d+[.-]\d+(?:[.-][a-zA-Z0-9]+)*$/.test(raw.tag_name)) { + if (typeof raw.tag_name !== "string" || !/^v\d+\.\d+(?:[.-][a-zA-Z0-9]+)+$/.test(raw.tag_name)) { throw new Error("The repository returned an invalid release tag."); } const tagName = raw.tag_name; const releaseUrl = `https://github.com/documentdb/documentdb/releases/tag/${tagName}`; - // The extension keeps the control-file form (0.117-0) on DEB, while RPM - // splits it into Version/Release and renders 0.117.0-1.el9. Everything else + // The extension keeps the control-file form (1.0-0) on DEB, while RPM + // splits it into Version/Release and renders 1.0.0-1.el9. Everything else // uses the flat dotted form. Read all three off real filenames so the page // cannot claim a shape the release does not contain. const aptVersion = @@ -101,7 +101,7 @@ export function parseReleaseInfo(payload: unknown): ReleaseInfo { firstMatch(names, /^ubuntu[\d.]+-documentdb_([^_]+)_all\.deb$/) ?? firstMatch(names, /^documentdb-(\d+\.\d+\.\d+)-\d+\.noarch\.rpm$/); - // e.g. documentdb-0.117.0-1.noarch.rpm -> 0.117.0-1 + // e.g. documentdb-1.0.0-1.noarch.rpm -> 1.0.0-1 const metaRpmVersion = firstMatch(names, /^documentdb-(\d+\.\d+\.\d+-\d+)\.noarch\.rpm$/); diff --git a/app/services/articleService.ts b/app/services/articleService.ts index 170db89..ed4d2f6 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -188,12 +188,23 @@ The current official release publishes the full stack — extension, gateway, se > This pre-GA release supports **fresh installation only**, not in-place package upgrades from earlier releases. Use a clean host or a new, empty PostgreSQL instance. Removing packages preserves database files; reinstalling is not a data reset. > [!NOTE] -> Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. +> Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. + +> [!NOTE] +> The current release is **v1.0-RC1**, a release candidate for DocumentDB 1.0. Try it and [report issues](https://github.com/documentdb/documentdb/issues) before v1.0-0 ships. The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) remains available from its release assets. You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. ## Install +On a clean Ubuntu 24.04 or EL9 host, the release's \`install.sh\` runs every step below — repository, packages and setup — and prompts for the admin password. Pass \`--pg-major 17\` for PostgreSQL 17 or \`--help\` for unattended options: + +\`\`\`bash +curl -fsSLo documentdb-install.sh https://github.com/documentdb/documentdb/releases/download/v1.0-RC1/install.sh && sh documentdb-install.sh +\`\`\` + +To run the steps yourself instead: + ### Ubuntu 24.04, PostgreSQL 18 (APT) \`\`\`bash @@ -392,7 +403,9 @@ It does **not** install the gateway, create a network endpoint for drivers, or r Use the extension package for your PostgreSQL major: \`postgresql-N-documentdb\` on Ubuntu or \`postgresqlN-documentdb\` on EL9. You own PostgreSQL configuration, extension activation, -and service restarts. Follow the matching release's [manual package instructions](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md), +and service restarts. Create \`documentdb_extended_rum\` as well as \`documentdb\`: +\`CREATE EXTENSION documentdb CASCADE\` does not pull it in, and without it no new index can +be built. Follow the matching release's [manual package instructions](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md), or the [extension-only offline instructions](/docs/linux-packages/offline#smaller-offline-cases) when PostgreSQL and all extension dependencies are already installed. @@ -642,7 +655,7 @@ Then continue with [Set up and connect](/docs/getting-started/packages#set-up-an If the target already has PostgreSQL, the PGDG extension dependencies (\`postgresql-N-cron\`, \`-pgvector\`, \`-postgis-3\`) and \`jq\`, you do not need a bundle: -- **Extension only, one file** — \`sudo apt install ./ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb\`. No gateway and no \`documentdb-setup\`. +- **Extension only, one file** — \`sudo apt install ./ubuntu24.04-postgresql-18-documentdb_1.0-0_amd64.deb\`. No gateway and no \`documentdb-setup\`. - **Full stack from the release assets** — pass the five packages for the selected PostgreSQL major to a *single* \`apt install\` / \`dnf install\`: \`documentdb-N\`, the matching \`postgresql-N-documentdb\` / \`postgresqlN-documentdb\` extension, \`documentdb-common\`, \`documentdb-gateway\`, and \`documentdb-postgresql-tools\`. For PostgreSQL 18 only, the optional \`documentdb\` meta package may be included; it selects \`documentdb-18\`. Local files resolve dependencies only against enabled repositories, so a package whose dependencies are not included still fails. `; @@ -1236,10 +1249,11 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | Tag | Contents | |---|---| -| \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | -| \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | -| \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | -| \`…:latest\` | Currently identical to \`pg17-0.117.0\` | +| \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-1.0.0\` | DocumentDB 1.0.0 (v1.0-RC1) on PostgreSQL 18 | +| \`…:pg17-1.0.0\` | DocumentDB 1.0.0 (v1.0-RC1) on PostgreSQL 17 | +| \`…:pg16-1.0.0\` · \`…:pg15-1.0.0\` | PostgreSQL 16 and 15 | +| \`…:pg17-0.117.0\` | Previous stable release, DocumentDB 0.117.0 | +| \`…:latest\` | Currently identical to \`pg17-1.0.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins > **PostgreSQL 18**. If you evaluate in Docker and then deploy from packages, you change @@ -1248,7 +1262,7 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr Every image records what it was built from: \`\`\`bash -docker run --rm --entrypoint cat ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0 /version.txt +docker run --rm --entrypoint cat ghcr.io/documentdb/documentdb/documentdb-local:pg18-1.0.0 /version.txt \`\`\` ## Data initialization @@ -1526,7 +1540,7 @@ function updatePrebuiltPackagesContent(content: string): string { const legacyClaim = 'Everything else — PostgreSQL 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL-compatible 8 — is not built by first-party CI for this release. The [package repository](https://documentdb.io/packages) serves those targets the extension package from an earlier release, or build from the tag with the scripts in [`packaging/`](https://github.com/documentdb/documentdb/blob/main/packaging/README.md). PostgreSQL 15 is extension-only: `documentdb-setup` needs 16 or newer.'; const currentPolicy = - 'Everything else — PostgreSQL 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL-compatible 8 — is not built by first-party CI or hosted by documentdb.io for this release. Starting with v0.116, packages from earlier releases are not carried forward. Build from the matching tag with the [`packaging/` scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md); PostgreSQL 15 remains extension-only because `documentdb-setup` requires 16 or newer.'; + 'Everything else — PostgreSQL 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL-compatible 8 — is not built by first-party CI or hosted by documentdb.io for this release. Starting with v0.116, packages from earlier releases are not carried forward. Build from the matching tag with the [`packaging/` scripts](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md); PostgreSQL 15 remains extension-only because `documentdb-setup` requires 16 or newer.'; return content.replace(legacyClaim, currentPolicy); } diff --git a/tests/installSelection.test.ts b/tests/installSelection.test.ts index 50326a1..babd9de 100644 --- a/tests/installSelection.test.ts +++ b/tests/installSelection.test.ts @@ -116,16 +116,16 @@ describe("install selection links", () => { describe("published package availability", () => { const assetNames = [ ...["documentdb-18", "documentdb-common", "documentdb-postgresql-tools"].flatMap((name) => [ - `ubuntu24.04-${name}_0.117.0_all.deb`, - `${name}-0.117.0-1.noarch.rpm`, + `ubuntu24.04-${name}_1.0.0_all.deb`, + `${name}-1.0.0-1.noarch.rpm`, ]), ...["amd64", "arm64"].flatMap((arch) => [ - `ubuntu24.04-documentdb-gateway_0.117.0_${arch}.deb`, - `ubuntu24.04-postgresql-18-documentdb_0.117-0_${arch}.deb`, + `ubuntu24.04-documentdb-gateway_1.0.0_${arch}.deb`, + `ubuntu24.04-postgresql-18-documentdb_1.0-0_${arch}.deb`, ]), ...["x86_64", "aarch64"].flatMap((arch) => [ - `documentdb-gateway-0.117.0-1.el9.${arch}.rpm`, - `rhel9-postgresql18-documentdb-0.117.0-1.el9.${arch}.rpm`, + `documentdb-gateway-1.0.0-1.el9.${arch}.rpm`, + `rhel9-postgresql18-documentdb-1.0.0-1.el9.${arch}.rpm`, ]), ]; const release = { ...FALLBACK_RELEASE, assetNames }; @@ -151,7 +151,7 @@ describe("published package availability", () => { expect(releaseHasPackages(partial, defaultInstallSelection.packages)).toBe(false); }); - it.each([null, {}, { tag_name: "v0.117-0", assets: [] }, { tag_name: "../other", assets: [] }])( + it.each([null, {}, { tag_name: "v1.0-RC1", assets: [] }, { tag_name: "../other", assets: [] }])( "surfaces malformed or incomplete metadata instead of inventing current versions", (payload) => { expect(() => parseReleaseInfo(payload)).toThrow(); diff --git a/tests/packageArticles.test.ts b/tests/packageArticles.test.ts index ab886d9..8f3b97e 100644 --- a/tests/packageArticles.test.ts +++ b/tests/packageArticles.test.ts @@ -277,13 +277,13 @@ describe('Linux package articles', () => { const offlineGuide = getArticleByPath('linux-packages', ['offline']); expect(linuxPackagesGuideContent).toContain( - 'documentdb/blob/v0.117-0/packaging/README.md', + 'documentdb/blob/v1.0-RC1/packaging/README.md', ); expect(linuxPackagesGuideContent).toContain( '`--load-sample-data` to the setup command to seed the `StoreData` database', ); expect(offlineGuide?.content).toContain( - 'ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb', + 'ubuntu24.04-postgresql-18-documentdb_1.0-0_amd64.deb', ); expect(offlineGuide?.content).toContain( 'pass the five packages for the selected PostgreSQL major', @@ -372,10 +372,10 @@ describe('Linux package articles', () => { '41,505 store documents and 2 rating documents', ); expect(source).toContain( - 'documentdb-local:pg18-0.117.0', + 'documentdb-local:pg18-1.0.0', ); expect(source).toContain( - 'Currently identical to \\`pg17-0.117.0\\`', + 'Currently identical to \\`pg17-1.0.0\\`', ); expect(source).not.toContain( '5 users, 5 products, 4 orders, and 2', diff --git a/tests/packageInstall.test.ts b/tests/packageInstall.test.ts index fb0fb85..41fbce3 100644 --- a/tests/packageInstall.test.ts +++ b/tests/packageInstall.test.ts @@ -75,33 +75,36 @@ describe('package metadata', () => { }); describe('release metadata', () => { - it('uses v0.117-0 for the first paint and feed fallback', () => { + it('uses v1.0-RC1 for the first paint and feed fallback', () => { expect(FALLBACK_RELEASE).toMatchObject({ - tagName: 'v0.117-0', - aptVersion: '0.117-0', - rpmVersion: '0.117.0-1.el9', - metaVersion: '0.117.0', - metaRpmVersion: '0.117.0-1', - releaseUrl: 'https://github.com/documentdb/documentdb/releases/tag/v0.117-0', + tagName: 'v1.0-RC1', + aptVersion: '1.0-0', + rpmVersion: '1.0.0-1.el9', + metaVersion: '1.0.0', + metaRpmVersion: '1.0.0-1', + releaseUrl: 'https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1', }); }); - it('derives v0.117 package versions from the published asset shapes', () => { + it.each([ + ['v0.117-0', '0.117-0', '0.117.0'], + ['v1.0-RC1', '1.0-0', '1.0.0'], + ])('derives %s package versions from the published asset shapes', (tag, ext, flat) => { expect(parseReleaseInfo({ - tag_name: 'v0.117-0', - html_url: 'https://github.com/documentdb/documentdb/releases/tag/v0.117-0', + tag_name: tag, + html_url: `https://github.com/documentdb/documentdb/releases/tag/${tag}`, assets: [ - { name: 'ubuntu24.04-documentdb_0.117.0_all.deb' }, - { name: 'ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb' }, - { name: 'documentdb-0.117.0-1.noarch.rpm' }, - { name: 'rhel9-postgresql18-documentdb-0.117.0-1.el9.x86_64.rpm' }, + { name: `ubuntu24.04-documentdb_${flat}_all.deb` }, + { name: `ubuntu24.04-postgresql-18-documentdb_${ext}_amd64.deb` }, + { name: `documentdb-${flat}-1.noarch.rpm` }, + { name: `rhel9-postgresql18-documentdb-${flat}-1.el9.x86_64.rpm` }, ], })).toMatchObject({ - tagName: 'v0.117-0', - aptVersion: '0.117-0', - rpmVersion: '0.117.0-1.el9', - metaVersion: '0.117.0', - metaRpmVersion: '0.117.0-1', + tagName: tag, + aptVersion: ext, + rpmVersion: `${flat}-1.el9`, + metaVersion: flat, + metaRpmVersion: `${flat}-1`, }); }); }); From dec419c66045c0df430025b984c069f478c50baa Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 16:35:54 -0400 Subject: [PATCH 02/10] Warn 0.117 hosts that the RC arrives on their next upgrade --- PACKAGE-INSTALL.md | 3 +++ app/services/articleService.ts | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index afc4bfd..5eae276 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -5,6 +5,9 @@ Repository-backed installation commands for DocumentDB. > The repository currently serves **v1.0-RC1**, a release candidate for DocumentDB 1.0. > The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) > remains available from its release assets. +> Hosts that installed v0.117-0 from this repository will be offered 1.0 on their next package +> upgrade; that upgrade is untested on the candidate, so hold the DocumentDB packages if you are +> not evaluating it. ## What is published diff --git a/app/services/articleService.ts b/app/services/articleService.ts index ed4d2f6..305d7f1 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -191,7 +191,7 @@ The current official release publishes the full stack — extension, gateway, se > Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. > [!NOTE] -> The current release is **v1.0-RC1**, a release candidate for DocumentDB 1.0. Try it and [report issues](https://github.com/documentdb/documentdb/issues) before v1.0-0 ships. The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) remains available from its release assets. +> The current release is **v1.0-RC1**, a release candidate for DocumentDB 1.0. Try it and [report issues](https://github.com/documentdb/documentdb/issues) before v1.0-0 ships. The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) remains available from its release assets. Hosts that installed v0.117-0 from this repository will be offered 1.0 on their next package upgrade; that upgrade is untested on the candidate, so hold the DocumentDB packages if you are not evaluating it. You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. From 0d00177531620b206bbfa2341cd74d1cbadf9808 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 16:56:47 -0400 Subject: [PATCH 03/10] Tighten RC notes, point guides at 1.0 only, pin guide tags to the release --- PACKAGE-INSTALL.md | 10 ++++------ app/services/articleService.ts | 7 +++---- tests/packageArticles.test.ts | 10 ++++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 5eae276..8f1588e 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,12 +2,10 @@ Repository-backed installation commands for DocumentDB. -> The repository currently serves **v1.0-RC1**, a release candidate for DocumentDB 1.0. -> The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) -> remains available from its release assets. -> Hosts that installed v0.117-0 from this repository will be offered 1.0 on their next package -> upgrade; that upgrade is untested on the candidate, so hold the DocumentDB packages if you are -> not evaluating it. +> This repository now serves **v1.0-RC1**, the 1.0 release candidate; please +> [report issues](https://github.com/documentdb/documentdb/issues). Hosts that installed v0.117-0 +> from here will get the RC on their next `apt upgrade` or `dnf upgrade`, and that upgrade is +> untested. Hold the DocumentDB packages on those hosts. ## What is published diff --git a/app/services/articleService.ts b/app/services/articleService.ts index 305d7f1..cb465e5 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -191,19 +191,19 @@ The current official release publishes the full stack — extension, gateway, se > Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. > [!NOTE] -> The current release is **v1.0-RC1**, a release candidate for DocumentDB 1.0. Try it and [report issues](https://github.com/documentdb/documentdb/issues) before v1.0-0 ships. The stable [v0.117-0](https://github.com/documentdb/documentdb/releases/tag/v0.117-0) remains available from its release assets. Hosts that installed v0.117-0 from this repository will be offered 1.0 on their next package upgrade; that upgrade is untested on the candidate, so hold the DocumentDB packages if you are not evaluating it. +> This repository now serves **v1.0-RC1**, the 1.0 release candidate; please [report issues](https://github.com/documentdb/documentdb/issues). Hosts that installed v0.117-0 from here will get the RC on their next \`apt upgrade\` or \`dnf upgrade\`, and that upgrade is untested. Hold the DocumentDB packages on those hosts. You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. ## Install -On a clean Ubuntu 24.04 or EL9 host, the release's \`install.sh\` runs every step below — repository, packages and setup — and prompts for the admin password. Pass \`--pg-major 17\` for PostgreSQL 17 or \`--help\` for unattended options: +On a clean Ubuntu 24.04 or EL9 host, \`install.sh\` configures the repositories, installs the packages and runs setup, prompting for the admin password. Add \`--pg-major 17\` for PostgreSQL 17, or see \`--help\` for unattended options: \`\`\`bash curl -fsSLo documentdb-install.sh https://github.com/documentdb/documentdb/releases/download/v1.0-RC1/install.sh && sh documentdb-install.sh \`\`\` -To run the steps yourself instead: +Then install \`mongosh\` as shown below and skip the setup command. To run each step yourself instead: ### Ubuntu 24.04, PostgreSQL 18 (APT) @@ -1252,7 +1252,6 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-1.0.0\` | DocumentDB 1.0.0 (v1.0-RC1) on PostgreSQL 18 | | \`…:pg17-1.0.0\` | DocumentDB 1.0.0 (v1.0-RC1) on PostgreSQL 17 | | \`…:pg16-1.0.0\` · \`…:pg15-1.0.0\` | PostgreSQL 16 and 15 | -| \`…:pg17-0.117.0\` | Previous stable release, DocumentDB 0.117.0 | | \`…:latest\` | Currently identical to \`pg17-1.0.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins diff --git a/tests/packageArticles.test.ts b/tests/packageArticles.test.ts index 8f3b97e..771e414 100644 --- a/tests/packageArticles.test.ts +++ b/tests/packageArticles.test.ts @@ -13,6 +13,7 @@ import { buildRpmInstallCommand, buildSetupCommand, } from '../app/lib/packageInstall'; +import { FALLBACK_RELEASE } from '../app/lib/releaseInfo'; function getCodeBlocks(content: string, language: string): string[] { const pattern = new RegExp('```' + language + '\\n([\\s\\S]*?)\\n```', 'g'); @@ -273,6 +274,15 @@ describe('Linux package articles', () => { ); }); + it('points every tag-specific guide link at the mirrored release', () => { + const tags = [ + ...`${linuxPackagesGuideContent}\n${linuxPackagesOperationsContent}`.matchAll(/documentdb\/(?:releases\/download|blob)\/(v[^/]+)\//g), + ].map((match) => match[1]); + + expect(tags.length).toBeGreaterThan(0); + expect(new Set(tags)).toEqual(new Set([FALLBACK_RELEASE.tagName])); + }); + it('uses the current release package guide and artifact version', () => { const offlineGuide = getArticleByPath('linux-packages', ['offline']); From de53732381361311b7a04647c784f537e4646fc6 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 17:08:43 -0400 Subject: [PATCH 04/10] Keep the site on 0.117 and point RC1 testers at its release --- .github/scripts/download_packages.sh | 17 ++++---- .github/workflows/continuous-integration.yml | 4 +- PACKAGE-INSTALL.md | 17 ++++---- app/lib/releaseInfo.ts | 36 ++++++++--------- app/services/articleService.ts | 31 ++++++--------- tests/installSelection.test.ts | 14 +++---- tests/packageArticles.test.ts | 8 ++-- tests/packageInstall.test.ts | 41 +++++++++----------- 8 files changed, 78 insertions(+), 90 deletions(-) diff --git a/.github/scripts/download_packages.sh b/.github/scripts/download_packages.sh index 8be001c..3291c08 100755 --- a/.github/scripts/download_packages.sh +++ b/.github/scripts/download_packages.sh @@ -88,23 +88,22 @@ if ! curl -fqs "https://api.github.com/repos/${REPO}/releases?per_page=100" > "$ exit 1 fi -# Select exactly one published release. Drafts are always skipped. "latest" -# skips prereleases too; naming a prerelease tag opts in, so the repository an -# RC's install.sh points at can serve that RC. +# Select exactly one published release. Drafts and prereleases are skipped. SELECTED_TAG=$(DOCUMENTDB_VERSION="$DOCUMENTDB_VERSION" python3 - "$RELEASES_JSON" <<'PY' import json, os, sys -releases = [r for r in json.load(open(sys.argv[1])) if not r.get("draft")] +releases = json.load(open(sys.argv[1])) +published = [r for r in releases if not r.get("draft") and not r.get("prerelease")] +if not published: + sys.exit("Error: no published releases found") + requested = os.environ.get("DOCUMENTDB_VERSION", "latest") if requested != "latest": - selected = next((r for r in releases if r["tag_name"] == requested), None) + selected = next((r for r in published if r["tag_name"] == requested), None) if selected is None: sys.exit(f"Error: Version {requested} not found in releases") else: - stable = [r for r in releases if not r.get("prerelease")] - if not stable: - sys.exit("Error: no published releases found") - selected = stable[0] + selected = published[0] print(selected["tag_name"]) PY diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index fee1ef0..89f18f0 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -96,9 +96,9 @@ jobs: run: | sudo apt-get update sudo apt-get install -y createrepo-c dpkg-dev rpm python3 - - name: Generate repository from v1.0-RC1 + - name: Generate repository from v0.117-0 env: - DOCUMENTDB_VERSION: v1.0-RC1 + DOCUMENTDB_VERSION: v0.117-0 run: .github/scripts/download_packages.sh - name: Verify release inventory and metadata run: python3 .github/scripts/verify_package_inventory.py diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 8f1588e..fbe72e2 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,10 +2,9 @@ Repository-backed installation commands for DocumentDB. -> This repository now serves **v1.0-RC1**, the 1.0 release candidate; please -> [report issues](https://github.com/documentdb/documentdb/issues). Hosts that installed v0.117-0 -> from here will get the RC on their next `apt upgrade` or `dnf upgrade`, and that upgrade is -> untested. Hold the DocumentDB packages on those hosts. +> **v1.0-RC1** is for testing only. Get it from its +> [release page](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) or the +> `pg*-1.0.0` Docker images; this repository stays on v0.117-0. ## What is published @@ -209,7 +208,7 @@ Before using this anywhere but a private machine: ```bash sudo documentdb-setup --status # gateway listener, service states, resolved paths -documentdb-gateway --version # DocumentDB version (1.0.0) +documentdb-gateway --version # DocumentDB version (0.117.0) dpkg -l | grep documentdb # or: rpm -qa | grep documentdb ``` @@ -439,7 +438,7 @@ three entry points: - `packaging/gateway/build_gateway_packages.sh` — wire-protocol gateway - `packaging/build_extra_packages.sh` — tools, common payload, `documentdb-N`, and meta package -The [v1.0-RC1 packaging guide](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md) +The [v0.117 packaging guide](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md) documents their required arguments, version formats, prerequisites, and accepted targets. PostgreSQL 15 remains extension-only for package-managed installs because the setup tools require PostgreSQL 16 or newer. @@ -454,9 +453,9 @@ they do not retain packages from older releases. Examples: ```text -ubuntu24.04-documentdb_1.0.0_all.deb -ubuntu24.04-postgresql-18-documentdb_1.0-0_amd64.deb -rhel9-postgresql18-documentdb-1.0.0-1.el9.x86_64.rpm +ubuntu24.04-documentdb_0.117.0_all.deb +ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb +rhel9-postgresql18-documentdb-0.117.0-1.el9.x86_64.rpm ``` For a full stack, pass the five packages for the selected PostgreSQL major to one command: diff --git a/app/lib/releaseInfo.ts b/app/lib/releaseInfo.ts index a1169da..2b5ac11 100644 --- a/app/lib/releaseInfo.ts +++ b/app/lib/releaseInfo.ts @@ -12,23 +12,23 @@ import { useEffect, useState } from "react"; // after v0.116-0 had been published and mirrored. export type ReleaseInfo = { - /** Git tag of the mirrored release, e.g. "v1.0-RC1". */ + /** Git tag of the mirrored release, e.g. "v0.117-0". */ tagName: string; - /** Extension package version on DEB, e.g. "1.0-0". */ + /** Extension package version on DEB, e.g. "0.117-0". */ aptVersion: string; - /** Extension package version on RPM, e.g. "1.0.0-1.el9". */ + /** Extension package version on RPM, e.g. "0.117.0-1.el9". */ rpmVersion: string; /** - * Version of every non-extension package, e.g. "1.0.0". + * Version of every non-extension package, e.g. "0.117.0". * - * The extension keeps the control-file form (`1.0-0`) while the meta, + * The extension keeps the control-file form (`0.117-0`) while the meta, * per-major, gateway, tools and common packages use the flat dotted form. * Pinning examples MUST pick the right one for the package being pinned: - * `apt install documentdb-18=1.0-0` fails with "Version '1.0-0' for - * 'documentdb-18' was not found", because that package is `1.0.0`. + * `apt install documentdb-18=0.117-0` fails with "Version '0.117-0' for + * 'documentdb-18' was not found", because that package is `0.117.0`. */ metaVersion: string; - /** RPM form of the non-extension packages, e.g. "1.0.0-1". */ + /** RPM form of the non-extension packages, e.g. "0.117.0-1". */ metaRpmVersion: string; releaseUrl: string; assetNames: readonly string[]; @@ -36,12 +36,12 @@ export type ReleaseInfo = { // A reference release, not evidence of current repository availability. export const FALLBACK_RELEASE: ReleaseInfo = { - tagName: "v1.0-RC1", - aptVersion: "1.0-0", - rpmVersion: "1.0.0-1.el9", - metaVersion: "1.0.0", - metaRpmVersion: "1.0.0-1", - releaseUrl: "https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1", + tagName: "v0.117-0", + aptVersion: "0.117-0", + rpmVersion: "0.117.0-1.el9", + metaVersion: "0.117.0", + metaRpmVersion: "0.117.0-1", + releaseUrl: "https://github.com/documentdb/documentdb/releases/tag/v0.117-0", assetNames: [], }; @@ -80,14 +80,14 @@ export function parseReleaseInfo(payload: unknown): ReleaseInfo { } const raw = payload as RawReleaseInfo; const names = assetNamesOf(raw); - if (typeof raw.tag_name !== "string" || !/^v\d+\.\d+(?:[.-][a-zA-Z0-9]+)+$/.test(raw.tag_name)) { + if (typeof raw.tag_name !== "string" || !/^v\d+\.\d+[.-]\d+(?:[.-][a-zA-Z0-9]+)*$/.test(raw.tag_name)) { throw new Error("The repository returned an invalid release tag."); } const tagName = raw.tag_name; const releaseUrl = `https://github.com/documentdb/documentdb/releases/tag/${tagName}`; - // The extension keeps the control-file form (1.0-0) on DEB, while RPM - // splits it into Version/Release and renders 1.0.0-1.el9. Everything else + // The extension keeps the control-file form (0.117-0) on DEB, while RPM + // splits it into Version/Release and renders 0.117.0-1.el9. Everything else // uses the flat dotted form. Read all three off real filenames so the page // cannot claim a shape the release does not contain. const aptVersion = @@ -101,7 +101,7 @@ export function parseReleaseInfo(payload: unknown): ReleaseInfo { firstMatch(names, /^ubuntu[\d.]+-documentdb_([^_]+)_all\.deb$/) ?? firstMatch(names, /^documentdb-(\d+\.\d+\.\d+)-\d+\.noarch\.rpm$/); - // e.g. documentdb-1.0.0-1.noarch.rpm -> 1.0.0-1 + // e.g. documentdb-0.117.0-1.noarch.rpm -> 0.117.0-1 const metaRpmVersion = firstMatch(names, /^documentdb-(\d+\.\d+\.\d+-\d+)\.noarch\.rpm$/); diff --git a/app/services/articleService.ts b/app/services/articleService.ts index cb465e5..d779039 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -188,23 +188,15 @@ The current official release publishes the full stack — extension, gateway, se > This pre-GA release supports **fresh installation only**, not in-place package upgrades from earlier releases. Use a clean host or a new, empty PostgreSQL instance. Removing packages preserves database files; reinstalling is not a data reset. > [!NOTE] -> Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. +> Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. > [!NOTE] -> This repository now serves **v1.0-RC1**, the 1.0 release candidate; please [report issues](https://github.com/documentdb/documentdb/issues). Hosts that installed v0.117-0 from here will get the RC on their next \`apt upgrade\` or \`dnf upgrade\`, and that upgrade is untested. Hold the DocumentDB packages on those hosts. +> **v1.0-RC1** is for testing only. Get it from its [release page](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) or the \`pg*-1.0.0\` Docker images; this repository and these guides stay on v0.117-0. You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. ## Install -On a clean Ubuntu 24.04 or EL9 host, \`install.sh\` configures the repositories, installs the packages and runs setup, prompting for the admin password. Add \`--pg-major 17\` for PostgreSQL 17, or see \`--help\` for unattended options: - -\`\`\`bash -curl -fsSLo documentdb-install.sh https://github.com/documentdb/documentdb/releases/download/v1.0-RC1/install.sh && sh documentdb-install.sh -\`\`\` - -Then install \`mongosh\` as shown below and skip the setup command. To run each step yourself instead: - ### Ubuntu 24.04, PostgreSQL 18 (APT) \`\`\`bash @@ -404,8 +396,8 @@ It does **not** install the gateway, create a network endpoint for drivers, or r Use the extension package for your PostgreSQL major: \`postgresql-N-documentdb\` on Ubuntu or \`postgresqlN-documentdb\` on EL9. You own PostgreSQL configuration, extension activation, and service restarts. Create \`documentdb_extended_rum\` as well as \`documentdb\`: -\`CREATE EXTENSION documentdb CASCADE\` does not pull it in, and without it no new index can -be built. Follow the matching release's [manual package instructions](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md), +\`CREATE EXTENSION documentdb CASCADE\` does not pull it in, and without it every index +creation fails. Follow the matching release's [manual package instructions](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md), or the [extension-only offline instructions](/docs/linux-packages/offline#smaller-offline-cases) when PostgreSQL and all extension dependencies are already installed. @@ -655,7 +647,7 @@ Then continue with [Set up and connect](/docs/getting-started/packages#set-up-an If the target already has PostgreSQL, the PGDG extension dependencies (\`postgresql-N-cron\`, \`-pgvector\`, \`-postgis-3\`) and \`jq\`, you do not need a bundle: -- **Extension only, one file** — \`sudo apt install ./ubuntu24.04-postgresql-18-documentdb_1.0-0_amd64.deb\`. No gateway and no \`documentdb-setup\`. +- **Extension only, one file** — \`sudo apt install ./ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb\`. No gateway and no \`documentdb-setup\`. - **Full stack from the release assets** — pass the five packages for the selected PostgreSQL major to a *single* \`apt install\` / \`dnf install\`: \`documentdb-N\`, the matching \`postgresql-N-documentdb\` / \`postgresqlN-documentdb\` extension, \`documentdb-common\`, \`documentdb-gateway\`, and \`documentdb-postgresql-tools\`. For PostgreSQL 18 only, the optional \`documentdb\` meta package may be included; it selects \`documentdb-18\`. Local files resolve dependencies only against enabled repositories, so a package whose dependencies are not included still fails. `; @@ -1249,10 +1241,11 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | Tag | Contents | |---|---| -| \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-1.0.0\` | DocumentDB 1.0.0 (v1.0-RC1) on PostgreSQL 18 | -| \`…:pg17-1.0.0\` | DocumentDB 1.0.0 (v1.0-RC1) on PostgreSQL 17 | -| \`…:pg16-1.0.0\` · \`…:pg15-1.0.0\` | PostgreSQL 16 and 15 | -| \`…:latest\` | Currently identical to \`pg17-1.0.0\` | +| \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | +| \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | +| \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | +| \`…:pg17-1.0.0\` · \`pg18\`, \`pg16\`, \`pg15\` | v1.0-RC1, for testing only | +| \`…:latest\` | Currently the RC1 test image \`pg17-1.0.0\`; pin \`pg17-0.117.0\` for the stable release | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins > **PostgreSQL 18**. If you evaluate in Docker and then deploy from packages, you change @@ -1261,7 +1254,7 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr Every image records what it was built from: \`\`\`bash -docker run --rm --entrypoint cat ghcr.io/documentdb/documentdb/documentdb-local:pg18-1.0.0 /version.txt +docker run --rm --entrypoint cat ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0 /version.txt \`\`\` ## Data initialization @@ -1539,7 +1532,7 @@ function updatePrebuiltPackagesContent(content: string): string { const legacyClaim = 'Everything else — PostgreSQL 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL-compatible 8 — is not built by first-party CI for this release. The [package repository](https://documentdb.io/packages) serves those targets the extension package from an earlier release, or build from the tag with the scripts in [`packaging/`](https://github.com/documentdb/documentdb/blob/main/packaging/README.md). PostgreSQL 15 is extension-only: `documentdb-setup` needs 16 or newer.'; const currentPolicy = - 'Everything else — PostgreSQL 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL-compatible 8 — is not built by first-party CI or hosted by documentdb.io for this release. Starting with v0.116, packages from earlier releases are not carried forward. Build from the matching tag with the [`packaging/` scripts](https://github.com/documentdb/documentdb/blob/v1.0-RC1/packaging/README.md); PostgreSQL 15 remains extension-only because `documentdb-setup` requires 16 or newer.'; + 'Everything else — PostgreSQL 15/16, Debian 11/12/13, Ubuntu 22.04, RHEL-compatible 8 — is not built by first-party CI or hosted by documentdb.io for this release. Starting with v0.116, packages from earlier releases are not carried forward. Build from the matching tag with the [`packaging/` scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md); PostgreSQL 15 remains extension-only because `documentdb-setup` requires 16 or newer.'; return content.replace(legacyClaim, currentPolicy); } diff --git a/tests/installSelection.test.ts b/tests/installSelection.test.ts index babd9de..50326a1 100644 --- a/tests/installSelection.test.ts +++ b/tests/installSelection.test.ts @@ -116,16 +116,16 @@ describe("install selection links", () => { describe("published package availability", () => { const assetNames = [ ...["documentdb-18", "documentdb-common", "documentdb-postgresql-tools"].flatMap((name) => [ - `ubuntu24.04-${name}_1.0.0_all.deb`, - `${name}-1.0.0-1.noarch.rpm`, + `ubuntu24.04-${name}_0.117.0_all.deb`, + `${name}-0.117.0-1.noarch.rpm`, ]), ...["amd64", "arm64"].flatMap((arch) => [ - `ubuntu24.04-documentdb-gateway_1.0.0_${arch}.deb`, - `ubuntu24.04-postgresql-18-documentdb_1.0-0_${arch}.deb`, + `ubuntu24.04-documentdb-gateway_0.117.0_${arch}.deb`, + `ubuntu24.04-postgresql-18-documentdb_0.117-0_${arch}.deb`, ]), ...["x86_64", "aarch64"].flatMap((arch) => [ - `documentdb-gateway-1.0.0-1.el9.${arch}.rpm`, - `rhel9-postgresql18-documentdb-1.0.0-1.el9.${arch}.rpm`, + `documentdb-gateway-0.117.0-1.el9.${arch}.rpm`, + `rhel9-postgresql18-documentdb-0.117.0-1.el9.${arch}.rpm`, ]), ]; const release = { ...FALLBACK_RELEASE, assetNames }; @@ -151,7 +151,7 @@ describe("published package availability", () => { expect(releaseHasPackages(partial, defaultInstallSelection.packages)).toBe(false); }); - it.each([null, {}, { tag_name: "v1.0-RC1", assets: [] }, { tag_name: "../other", assets: [] }])( + it.each([null, {}, { tag_name: "v0.117-0", assets: [] }, { tag_name: "../other", assets: [] }])( "surfaces malformed or incomplete metadata instead of inventing current versions", (payload) => { expect(() => parseReleaseInfo(payload)).toThrow(); diff --git a/tests/packageArticles.test.ts b/tests/packageArticles.test.ts index 771e414..f6ec9dc 100644 --- a/tests/packageArticles.test.ts +++ b/tests/packageArticles.test.ts @@ -287,13 +287,13 @@ describe('Linux package articles', () => { const offlineGuide = getArticleByPath('linux-packages', ['offline']); expect(linuxPackagesGuideContent).toContain( - 'documentdb/blob/v1.0-RC1/packaging/README.md', + 'documentdb/blob/v0.117-0/packaging/README.md', ); expect(linuxPackagesGuideContent).toContain( '`--load-sample-data` to the setup command to seed the `StoreData` database', ); expect(offlineGuide?.content).toContain( - 'ubuntu24.04-postgresql-18-documentdb_1.0-0_amd64.deb', + 'ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb', ); expect(offlineGuide?.content).toContain( 'pass the five packages for the selected PostgreSQL major', @@ -382,10 +382,10 @@ describe('Linux package articles', () => { '41,505 store documents and 2 rating documents', ); expect(source).toContain( - 'documentdb-local:pg18-1.0.0', + 'documentdb-local:pg18-0.117.0', ); expect(source).toContain( - 'Currently identical to \\`pg17-1.0.0\\`', + 'Currently the RC1 test image \\`pg17-1.0.0\\`; pin \\`pg17-0.117.0\\`', ); expect(source).not.toContain( '5 users, 5 products, 4 orders, and 2', diff --git a/tests/packageInstall.test.ts b/tests/packageInstall.test.ts index 41fbce3..fb0fb85 100644 --- a/tests/packageInstall.test.ts +++ b/tests/packageInstall.test.ts @@ -75,36 +75,33 @@ describe('package metadata', () => { }); describe('release metadata', () => { - it('uses v1.0-RC1 for the first paint and feed fallback', () => { + it('uses v0.117-0 for the first paint and feed fallback', () => { expect(FALLBACK_RELEASE).toMatchObject({ - tagName: 'v1.0-RC1', - aptVersion: '1.0-0', - rpmVersion: '1.0.0-1.el9', - metaVersion: '1.0.0', - metaRpmVersion: '1.0.0-1', - releaseUrl: 'https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1', + tagName: 'v0.117-0', + aptVersion: '0.117-0', + rpmVersion: '0.117.0-1.el9', + metaVersion: '0.117.0', + metaRpmVersion: '0.117.0-1', + releaseUrl: 'https://github.com/documentdb/documentdb/releases/tag/v0.117-0', }); }); - it.each([ - ['v0.117-0', '0.117-0', '0.117.0'], - ['v1.0-RC1', '1.0-0', '1.0.0'], - ])('derives %s package versions from the published asset shapes', (tag, ext, flat) => { + it('derives v0.117 package versions from the published asset shapes', () => { expect(parseReleaseInfo({ - tag_name: tag, - html_url: `https://github.com/documentdb/documentdb/releases/tag/${tag}`, + tag_name: 'v0.117-0', + html_url: 'https://github.com/documentdb/documentdb/releases/tag/v0.117-0', assets: [ - { name: `ubuntu24.04-documentdb_${flat}_all.deb` }, - { name: `ubuntu24.04-postgresql-18-documentdb_${ext}_amd64.deb` }, - { name: `documentdb-${flat}-1.noarch.rpm` }, - { name: `rhel9-postgresql18-documentdb-${flat}-1.el9.x86_64.rpm` }, + { name: 'ubuntu24.04-documentdb_0.117.0_all.deb' }, + { name: 'ubuntu24.04-postgresql-18-documentdb_0.117-0_amd64.deb' }, + { name: 'documentdb-0.117.0-1.noarch.rpm' }, + { name: 'rhel9-postgresql18-documentdb-0.117.0-1.el9.x86_64.rpm' }, ], })).toMatchObject({ - tagName: tag, - aptVersion: ext, - rpmVersion: `${flat}-1.el9`, - metaVersion: flat, - metaRpmVersion: `${flat}-1`, + tagName: 'v0.117-0', + aptVersion: '0.117-0', + rpmVersion: '0.117.0-1.el9', + metaVersion: '0.117.0', + metaRpmVersion: '0.117.0-1', }); }); }); From e99257a72079854b28b621aba5dce48a2f9f37f3 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 17:14:30 -0400 Subject: [PATCH 05/10] Add an opt-in section for trying the 1.0 release candidate --- PACKAGE-INSTALL.md | 7 ++++--- app/services/articleService.ts | 15 ++++++++++++--- tests/packageArticles.test.ts | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index fbe72e2..6fa47e2 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,9 +2,10 @@ Repository-backed installation commands for DocumentDB. -> **v1.0-RC1** is for testing only. Get it from its -> [release page](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) or the -> `pg*-1.0.0` Docker images; this repository stays on v0.117-0. +> This repository serves v0.117-0. To try DocumentDB 1.0, use the +> [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) release assets or the +> `pg17-1.0.0` / `pg18-1.0.0` Docker images. The release candidate is for testing only: it won't be +> maintained and has no supported upgrade path to 1.0 or later. ## What is published diff --git a/app/services/articleService.ts b/app/services/articleService.ts index d779039..e8dd23f 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -191,7 +191,7 @@ The current official release publishes the full stack — extension, gateway, se > Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. > [!NOTE] -> **v1.0-RC1** is for testing only. Get it from its [release page](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) or the \`pg*-1.0.0\` Docker images; this repository and these guides stay on v0.117-0. +> Want to try DocumentDB 1.0? See [Try the 1.0 release candidate](#try-the-1-0-release-candidate). You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. @@ -287,6 +287,15 @@ A database and collection are created on first write: More failure modes, including hosts without systemd: [Operating a package install](/docs/linux-packages#troubleshooting). +## Try the 1.0 release candidate + +[v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) lets you try DocumentDB 1.0 before it ships. It is for testing only: it won't be maintained, and there is no supported upgrade from it to 1.0 or later, so use a host you can rebuild and don't keep data on it you need. Please [report issues](https://github.com/documentdb/documentdb/issues). + +This repository stays on v0.117-0, so the commands above install 0.117. To try the RC instead: + +- **Docker** — replace \`latest\` with \`pg17-1.0.0\` or \`pg18-1.0.0\` in any Docker quick start. +- **Linux packages** — download the packages for your platform from the release page and install them all in one \`apt install\` or \`dnf install\`, with PGDG (and EPEL and CRB on EL9) already enabled. See [Smaller offline cases](/docs/linux-packages/offline#smaller-offline-cases). The RC's \`install.sh\` installs from this repository, so it gives you 0.117. + ## If you used an earlier repository target documentdb.io no longer publishes packages for Ubuntu 22.04, Debian 11/12/13, RHEL-compatible 8, or PostgreSQL 16. Existing installations keep running, but receive no package updates and cannot reinstall those packages from documentdb.io. @@ -1244,8 +1253,8 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | | \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | | \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | -| \`…:pg17-1.0.0\` · \`pg18\`, \`pg16\`, \`pg15\` | v1.0-RC1, for testing only | -| \`…:latest\` | Currently the RC1 test image \`pg17-1.0.0\`; pin \`pg17-0.117.0\` for the stable release | +| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) release candidate, for testing only | +| \`…:latest\` | Currently identical to \`pg17-0.117.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins > **PostgreSQL 18**. If you evaluate in Docker and then deploy from packages, you change diff --git a/tests/packageArticles.test.ts b/tests/packageArticles.test.ts index f6ec9dc..869f86e 100644 --- a/tests/packageArticles.test.ts +++ b/tests/packageArticles.test.ts @@ -385,7 +385,7 @@ describe('Linux package articles', () => { 'documentdb-local:pg18-0.117.0', ); expect(source).toContain( - 'Currently the RC1 test image \\`pg17-1.0.0\\`; pin \\`pg17-0.117.0\\`', + 'Currently identical to \\`pg17-0.117.0\\`', ); expect(source).not.toContain( '5 users, 5 products, 4 orders, and 2', From 94e3dd410fbb887b6601b7a41b81d44e746a3133 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 17:39:49 -0400 Subject: [PATCH 06/10] Tighten RC guidance after review --- PACKAGE-INSTALL.md | 9 +++++---- app/services/articleService.ts | 10 +++++----- tests/packageArticles.test.ts | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 6fa47e2..91ebac4 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,10 +2,11 @@ Repository-backed installation commands for DocumentDB. -> This repository serves v0.117-0. To try DocumentDB 1.0, use the -> [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) release assets or the -> `pg17-1.0.0` / `pg18-1.0.0` Docker images. The release candidate is for testing only: it won't be -> maintained and has no supported upgrade path to 1.0 or later. +> This repository serves v0.117-0. To try DocumentDB 1.0, install the +> [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) packages from the +> release page or use the `pg17-1.0.0` / `pg18-1.0.0` Docker images. The release's `install.sh` +> installs from this repository, so it gives you 0.117. The release candidate is for testing only: +> it won't be maintained and has no supported upgrade path. ## What is published diff --git a/app/services/articleService.ts b/app/services/articleService.ts index e8dd23f..34d7ed7 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -289,12 +289,12 @@ More failure modes, including hosts without systemd: [Operating a package instal ## Try the 1.0 release candidate -[v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) lets you try DocumentDB 1.0 before it ships. It is for testing only: it won't be maintained, and there is no supported upgrade from it to 1.0 or later, so use a host you can rebuild and don't keep data on it you need. Please [report issues](https://github.com/documentdb/documentdb/issues). +[v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) lets you try DocumentDB 1.0 before it ships. It is for testing, not production: it won't be maintained and has no supported upgrade path, including to 1.0, so use a separate instance with data you can throw away. Please [report issues](https://github.com/documentdb/documentdb/issues). -This repository stays on v0.117-0, so the commands above install 0.117. To try the RC instead: +The documentdb.io package repository serves v0.117-0, so the commands above install 0.117. To try the RC instead: -- **Docker** — replace \`latest\` with \`pg17-1.0.0\` or \`pg18-1.0.0\` in any Docker quick start. -- **Linux packages** — download the packages for your platform from the release page and install them all in one \`apt install\` or \`dnf install\`, with PGDG (and EPEL and CRB on EL9) already enabled. See [Smaller offline cases](/docs/linux-packages/offline#smaller-offline-cases). The RC's \`install.sh\` installs from this repository, so it gives you 0.117. +- **Docker** — in any Docker quick start, use the image tag \`pg17-1.0.0\` or \`pg18-1.0.0\` and a new, empty data volume. Despite the tag, these images are RC1, not the final 1.0. +- **Linux packages** — download the packages for your platform from the release page and install them all in one \`apt install\` or \`dnf install\`, with PGDG (and EPEL and CRB on EL9) already enabled. See [Smaller offline cases](/docs/linux-packages/offline#smaller-offline-cases). Don't use the RC's \`install.sh\`: it installs from the documentdb.io repository, so it gives you 0.117. ## If you used an earlier repository target @@ -1253,7 +1253,7 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | | \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | | \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | -| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) release candidate, for testing only | +| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no maintenance or upgrade path](/docs/getting-started/packages#try-the-1-0-release-candidate). Use a new, empty data volume. | | \`…:latest\` | Currently identical to \`pg17-0.117.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins diff --git a/tests/packageArticles.test.ts b/tests/packageArticles.test.ts index 869f86e..0bf4934 100644 --- a/tests/packageArticles.test.ts +++ b/tests/packageArticles.test.ts @@ -274,7 +274,7 @@ describe('Linux package articles', () => { ); }); - it('points every tag-specific guide link at the mirrored release', () => { + it('keeps package download and source links on the mirrored release', () => { const tags = [ ...`${linuxPackagesGuideContent}\n${linuxPackagesOperationsContent}`.matchAll(/documentdb\/(?:releases\/download|blob)\/(v[^/]+)\//g), ].map((match) => match[1]); From cbfb65704e4c630098a945aebad4d2a5503b38a4 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 17:41:45 -0400 Subject: [PATCH 07/10] Point RC testers at the docs release-candidate page --- PACKAGE-INSTALL.md | 8 +++----- app/services/articleService.ts | 13 ++----------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 91ebac4..9289b5f 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,11 +2,9 @@ Repository-backed installation commands for DocumentDB. -> This repository serves v0.117-0. To try DocumentDB 1.0, install the -> [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) packages from the -> release page or use the `pg17-1.0.0` / `pg18-1.0.0` Docker images. The release's `install.sh` -> installs from this repository, so it gives you 0.117. The release candidate is for testing only: -> it won't be maintained and has no supported upgrade path. +> This repository serves v0.117-0. v1.0-RC1 is for testing only, with no maintenance and no +> upgrade path, and isn't in this repository; see +> [Try the 1.0 release candidate](https://documentdb.io/docs/getting-started/release-candidate/). ## What is published diff --git a/app/services/articleService.ts b/app/services/articleService.ts index 34d7ed7..c985769 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -191,7 +191,7 @@ The current official release publishes the full stack — extension, gateway, se > Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. > [!NOTE] -> Want to try DocumentDB 1.0? See [Try the 1.0 release candidate](#try-the-1-0-release-candidate). +> Want to try DocumentDB 1.0? [v1.0-RC1](/docs/getting-started/release-candidate) is for testing only, with no maintenance and no upgrade path. It isn't in the package repository, so the commands below install v0.117-0. You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. @@ -287,15 +287,6 @@ A database and collection are created on first write: More failure modes, including hosts without systemd: [Operating a package install](/docs/linux-packages#troubleshooting). -## Try the 1.0 release candidate - -[v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1) lets you try DocumentDB 1.0 before it ships. It is for testing, not production: it won't be maintained and has no supported upgrade path, including to 1.0, so use a separate instance with data you can throw away. Please [report issues](https://github.com/documentdb/documentdb/issues). - -The documentdb.io package repository serves v0.117-0, so the commands above install 0.117. To try the RC instead: - -- **Docker** — in any Docker quick start, use the image tag \`pg17-1.0.0\` or \`pg18-1.0.0\` and a new, empty data volume. Despite the tag, these images are RC1, not the final 1.0. -- **Linux packages** — download the packages for your platform from the release page and install them all in one \`apt install\` or \`dnf install\`, with PGDG (and EPEL and CRB on EL9) already enabled. See [Smaller offline cases](/docs/linux-packages/offline#smaller-offline-cases). Don't use the RC's \`install.sh\`: it installs from the documentdb.io repository, so it gives you 0.117. - ## If you used an earlier repository target documentdb.io no longer publishes packages for Ubuntu 22.04, Debian 11/12/13, RHEL-compatible 8, or PostgreSQL 16. Existing installations keep running, but receive no package updates and cannot reinstall those packages from documentdb.io. @@ -1253,7 +1244,7 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | | \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | | \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | -| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no maintenance or upgrade path](/docs/getting-started/packages#try-the-1-0-release-candidate). Use a new, empty data volume. | +| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no maintenance or upgrade path](/docs/getting-started/release-candidate). Use a new, empty data volume. | | \`…:latest\` | Currently identical to \`pg17-0.117.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins From 38361ac9136f25a746f1865ce51c00c39fd5d23f Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 18:29:23 -0400 Subject: [PATCH 08/10] Say RC1 gets no fixes, RC2 or 1.0 does Signed-off-by: Guanzhou Song --- PACKAGE-INSTALL.md | 4 ++-- app/services/articleService.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 9289b5f..71cd8b8 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -2,8 +2,8 @@ Repository-backed installation commands for DocumentDB. -> This repository serves v0.117-0. v1.0-RC1 is for testing only, with no maintenance and no -> upgrade path, and isn't in this repository; see +> This repository serves v0.117-0. v1.0-RC1 is for testing only, gets no fixes (those go into +> RC2 or 1.0), has no upgrade path, and isn't in this repository; see > [Try the 1.0 release candidate](https://documentdb.io/docs/getting-started/release-candidate/). ## What is published diff --git a/app/services/articleService.ts b/app/services/articleService.ts index c985769..cf284a4 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -191,7 +191,7 @@ The current official release publishes the full stack — extension, gateway, se > Need another distribution or PostgreSQL major? We welcome community builds. Check out the matching release tag and use the version-parameterized [packaging scripts](https://github.com/documentdb/documentdb/blob/v0.117-0/packaging/README.md). \`build_packages.sh\` builds the extension, \`gateway/build_gateway_packages.sh\` builds the gateway, and \`build_extra_packages.sh\` builds the common, tools, stand-alone, and meta packages. PostgreSQL 15 is extension-only because the setup tools require PostgreSQL 16 or newer. These builds are on demand and are not official release assets hosted by documentdb.io. > [!NOTE] -> Want to try DocumentDB 1.0? [v1.0-RC1](/docs/getting-started/release-candidate) is for testing only, with no maintenance and no upgrade path. It isn't in the package repository, so the commands below install v0.117-0. +> Want to try DocumentDB 1.0? [v1.0-RC1](/docs/getting-started/release-candidate) is for testing only, gets no fixes (those go into RC2 or 1.0) and has no upgrade path. It isn't in the package repository, so the commands below install v0.117-0. You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. @@ -1244,7 +1244,7 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | | \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | | \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | -| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no maintenance or upgrade path](/docs/getting-started/release-candidate). Use a new, empty data volume. | +| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no fixes to RC1 and no upgrade path](/docs/getting-started/release-candidate). Use a new, empty data volume. | | \`…:latest\` | Currently identical to \`pg17-0.117.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins From c0db1e83d80ed361e9911ce0c57dfffb5d62cc49 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Mon, 28 Sep 2026 20:52:39 -0400 Subject: [PATCH 09/10] List all four RC1 images on their -rc1 tags The pgNN-1.0.0 tags will move to the final 1.0 build; testers should pin pgNN-1.0.0-rc1. RC images exist for PostgreSQL 15-18, not only 17/18. Signed-off-by: Guanzhou Song --- app/services/articleService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/articleService.ts b/app/services/articleService.ts index cf284a4..30004b9 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -1244,7 +1244,7 @@ The \`latest\` tag is a convenience alias. Pin an explicit tag for anything repr | \`ghcr.io/documentdb/documentdb/documentdb-local:pg18-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 18 | | \`…:pg17-0.117.0\` | DocumentDB 0.117.0 on PostgreSQL 17 | | \`…:pg16-0.117.0\` · \`…:pg15-0.117.0\` | PostgreSQL 16 and 15 | -| \`…:pg17-1.0.0\` · \`…:pg18-1.0.0\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no fixes to RC1 and no upgrade path](/docs/getting-started/release-candidate). Use a new, empty data volume. | +| \`…:pg15-1.0.0-rc1\` · \`…:pg16-1.0.0-rc1\` · \`…:pg17-1.0.0-rc1\` · \`…:pg18-1.0.0-rc1\` | [v1.0-RC1](https://github.com/documentdb/documentdb/releases/tag/v1.0-RC1), for testing only, with [no fixes to RC1 and no upgrade path](/docs/getting-started/release-candidate). No date for 1.0 yet. Use a new, empty data volume. The \`pgNN-1.0.0\` tags point at the same images today but will move to the final 1.0 build. | | \`…:latest\` | Currently identical to \`pg17-0.117.0\` | > \`latest\` tracks **PostgreSQL 17**, while the \`documentdb\` package on Linux pins From 0ef1562521756c121d5ac54681cc1919279d95f4 Mon Sep 17 00:00:00 2001 From: Guanzhou Song <26541184+GuanzhouSong@users.noreply.github.com> Date: Thu, 1 Oct 2026 10:22:11 -0400 Subject: [PATCH 10/10] Publish a pinned installer with explicit RC1 selection Signed-off-by: Guanzhou Song <85122868+guanzhousongmicrosoft@users.noreply.github.com> --- PACKAGE-INSTALL.md | 20 +++++++++++ app/services/articleService.ts | 17 +++++++++ package.json | 3 +- scripts/publish-installer.mjs | 32 +++++++++++++++++ tests/packageArticles.test.ts | 8 +++++ tests/publishInstaller.test.ts | 65 ++++++++++++++++++++++++++++++++++ 6 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 scripts/publish-installer.mjs create mode 100644 tests/publishInstaller.test.ts diff --git a/PACKAGE-INSTALL.md b/PACKAGE-INSTALL.md index 71cd8b8..27c2ce7 100644 --- a/PACKAGE-INSTALL.md +++ b/PACKAGE-INSTALL.md @@ -6,6 +6,26 @@ Repository-backed installation commands for DocumentDB. > RC2 or 1.0), has no upgrade path, and isn't in this repository; see > [Try the 1.0 release candidate](https://documentdb.io/docs/getting-started/release-candidate/). +## Clean-host installer + +On a clean Ubuntu 24.04 or EL9 host, download and run the installer: + +```sh +curl -fsSLo documentdb-install.sh https://documentdb.io/install.sh && +sh documentdb-install.sh +``` + +The default installs from the stable repository, currently v0.117-0. +For disposable RC1 testing, run `sh documentdb-install.sh --version v1.0-RC1` +instead. Both modes default to PostgreSQL 18; use `--pg-major 17` to select 17. +The RC path downloads checksum-verified release assets without putting them in +the stable repository. Existing DocumentDB packages, configuration, or data +are refused for RC installation. + +The website publishes the canonical engine installer using the commit and +checksum pinned in `scripts/publish-installer.mjs`. This pin is independent +of `DOCUMENTDB_VERSION`, which selects the stable package mirror. + ## What is published Starting with **v0.116-0**, DocumentDB ships a multi-package layout with a setup wizard and diff --git a/app/services/articleService.ts b/app/services/articleService.ts index 30004b9..490a064 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -195,6 +195,23 @@ The current official release publishes the full stack — extension, gateway, se You do not need PostgreSQL already installed — the setup wizard creates and manages its own instance. The install does add the PGDG repository and pull PostgreSQL, PostGIS and around 160 packages (about 140 MB), so pick a host you are willing to have PGDG on. +## Clean-host installer + +On a fresh Ubuntu 24.04 or EL9 host, download and run the installer: + +\`\`\`sh +curl -fsSLo documentdb-install.sh https://documentdb.io/install.sh && +sh documentdb-install.sh +\`\`\` + +This defaults to the stable repository, currently v0.117-0, and PostgreSQL 18. +Use \`--pg-major 17\` to select PostgreSQL 17. For disposable RC1 testing, +run \`sh documentdb-install.sh --version v1.0-RC1\` instead. The RC path +downloads checksum-verified release assets and refuses existing DocumentDB +packages, configuration, or data. RC1 has no maintenance or supported upgrades. +See [RC instructions](/docs/getting-started/release-candidate) for details. +The manual repository commands below remain on the stable channel. + ## Install ### Ubuntu 24.04, PostgreSQL 18 (APT) diff --git a/package.json b/package.json index 0527c10..e14e0e8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "private": true, "scripts": { "dev": "npm run compile && next dev --turbopack", - "build": "npm run build:next && npm run build:blogs && npm run build:sitemap", + "build": "npm run build:next && npm run build:blogs && npm run build:sitemap && npm run build:installer", + "build:installer": "node scripts/publish-installer.mjs", "build:next": "npm run compile && next build --turbopack", "build:blogs": "bundle exec jekyll build --config blogs/_config.yml --source blogs --destination out/blogs --baseurl \"${JEKYLL_BASE_PATH:-/blogs}\"", "build:sitemap": "node scripts/generate-sitemap.mjs", diff --git a/scripts/publish-installer.mjs b/scripts/publish-installer.mjs new file mode 100644 index 0000000..e78dee6 --- /dev/null +++ b/scripts/publish-installer.mjs @@ -0,0 +1,32 @@ +import { createHash } from 'node:crypto'; +import { mkdir, writeFile } from 'node:fs/promises'; +import { resolve } from 'node:path'; +import { pathToFileURL } from 'node:url'; + +export const installerSource = { + revision: '2b0321c94daebdd6a5327b641069af0d0036997b', + sha256: 'b42077317d3eed19ac6090b757c59ce20b2f6a07b912cd4e134fd4cef7e3da0c', +}; + +export async function publishInstaller(outputDirectory = 'out') { + if (!/^[a-f0-9]{40}$/.test(installerSource.revision) || + !/^[a-f0-9]{64}$/.test(installerSource.sha256)) { + throw new Error('Installer source must have a pinned commit and SHA256'); + } + const url = `https://raw.githubusercontent.com/documentdb/documentdb/${installerSource.revision}/packaging/install.sh`; + const response = await fetch(url, { signal: AbortSignal.timeout(60_000) }); + if (!response.ok) { + throw new Error(`Installer download failed: HTTP ${response.status}`); + } + const script = Buffer.from(await response.arrayBuffer()); + const digest = createHash('sha256').update(script).digest('hex'); + if (digest !== installerSource.sha256) { + throw new Error(`Installer checksum mismatch: ${digest}`); + } + await mkdir(outputDirectory, { recursive: true }); + await writeFile(resolve(outputDirectory, 'install.sh'), script); +} + +if (process.argv[1] && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) { + await publishInstaller(); +} diff --git a/tests/packageArticles.test.ts b/tests/packageArticles.test.ts index 0bf4934..1767105 100644 --- a/tests/packageArticles.test.ts +++ b/tests/packageArticles.test.ts @@ -283,6 +283,14 @@ describe('Linux package articles', () => { expect(new Set(tags)).toEqual(new Set([FALLBACK_RELEASE.tagName])); }); + it('keeps stable installation as the default and makes RC1 an explicit selection', () => { + expect(linuxPackagesGuideContent).toContain('https://documentdb.io/install.sh'); + expect(linuxPackagesGuideContent).toContain('sh documentdb-install.sh --version v1.0-RC1'); + expect(linuxPackagesGuideContent).toContain('defaults to the stable repository, currently v0.117-0'); + expect(linuxPackagesGuideContent).toContain('refuses existing DocumentDB'); + expect(linuxPackagesGuideContent).toContain('RC1 has no maintenance or supported upgrades'); + }); + it('uses the current release package guide and artifact version', () => { const offlineGuide = getArticleByPath('linux-packages', ['offline']); diff --git a/tests/publishInstaller.test.ts b/tests/publishInstaller.test.ts new file mode 100644 index 0000000..82cb32a --- /dev/null +++ b/tests/publishInstaller.test.ts @@ -0,0 +1,65 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { createHash } from 'node:crypto'; +import { mkdtemp, readFile, rm } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import path from 'node:path'; +import { installerSource, publishInstaller } from '../scripts/publish-installer.mjs'; + +const originalSource = { ...installerSource }; +const directories: string[] = []; +const script = '#!/bin/sh\nprintf "installer fixture\\n"\n'; + +async function outputDirectory() { + const directory = await mkdtemp(path.join(tmpdir(), 'documentdb-installer-')); + directories.push(directory); + return directory; +} + +afterEach(async () => { + Object.assign(installerSource, originalSource); + vi.unstubAllGlobals(); + await Promise.all(directories.splice(0).map((directory) => rm(directory, { recursive: true }))); +}); + +describe('published installer', () => { + it('pins the engine revision and checksum independently of the stable package channel', () => { + expect(installerSource.revision).toMatch(/^[a-f0-9]{40}$/); + expect(installerSource.sha256).toMatch(/^[a-f0-9]{64}$/); + }); + + it('publishes the verified bytes without changing the execution barrier', async () => { + installerSource.revision = 'a'.repeat(40); + installerSource.sha256 = createHash('sha256').update(script).digest('hex'); + const download = vi.fn().mockResolvedValue(new Response(script)); + vi.stubGlobal('fetch', download); + const directory = await outputDirectory(); + await publishInstaller(directory); + expect(await readFile(path.join(directory, 'install.sh'), 'utf8')).toBe(script); + expect(download.mock.calls[0][0]).toBe( + `https://raw.githubusercontent.com/documentdb/documentdb/${'a'.repeat(40)}/packaging/install.sh`, + ); + }); + + it.each(['HTTP error', 'checksum mismatch', 'network error'])('refuses %s without publishing', async (failure) => { + installerSource.revision = 'a'.repeat(40); + installerSource.sha256 = '0'.repeat(64); + const download = vi.fn(); + if (failure === 'network error') { + download.mockRejectedValue(new Error('network error')); + } else { + download.mockResolvedValue(new Response(script, { status: failure === 'HTTP error' ? 404 : 200 })); + } + vi.stubGlobal('fetch', download); + const directory = await outputDirectory(); + await expect(publishInstaller(directory)).rejects.toThrow(); + await expect(readFile(path.join(directory, 'install.sh'))).rejects.toThrow(); + }); + + it('rejects a moving source reference before downloading', async () => { + installerSource.revision = 'main'; + const download = vi.fn(); + vi.stubGlobal('fetch', download); + await expect(publishInstaller(await outputDirectory())).rejects.toThrow('pinned commit'); + expect(download).not.toHaveBeenCalled(); + }); +});