From d782882c4df20bafbebfc21f09d00508cd911392 Mon Sep 17 00:00:00 2001 From: cevheri Date: Sat, 24 Oct 2026 05:47:40 +0300 Subject: [PATCH] release: installer and chart 1.1.1 with LibreDB Platform 1.1.0 The tag installer-v1.1.0 failed in its build job before it published anything (run 40053893784, fixed by #44), and the repository's tag rules keep it from moving, so the release is 1.1.1. It pins the same Platform 1.1.0 image and Studio 1.0.0; release:record writes release/history/1.1.1.json, the chart takes version and appVersion 1.1.1, and its jobs bundle is rebuilt on the new manifest. --- CLAUDE.md | 2 +- charts/libredb-platform/Chart.yaml | 4 +- charts/libredb-platform/README.md | 2 +- .../files/libredb-jobs.cjs.gz | Bin 173873 -> 173874 bytes docs/deploy/install-docker.md | 8 +-- docs/deploy/install-kubernetes.md | 4 +- installer/package.json | 2 +- installer/release/history/1.1.1.json | 53 ++++++++++++++++++ installer/release/release.config.json | 2 +- 9 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 installer/release/history/1.1.1.json diff --git a/CLAUDE.md b/CLAUDE.md index 26ffd0c..8d095d3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -193,7 +193,7 @@ Next.js also compiles `src/instrumentation.ts` for the Edge runtime, so Node.js- `installer/` is a standalone Bun 1.4.2 package with its own `package.json`, `bun.lock` and tests. Platform's lint, Vitest run and Docker image ignore it. -Release 1.1.0 installs in Docker mode on one x86_64 Linux host with the installer, and on Kubernetes with the Helm chart `charts/libredb-platform`, whose jobs run the installer's Kubernetes-mode code; the installer's own `preflight`, `plan`, `apply`, `verify` and `db-script` refuse `mode: kubernetes`. +Release 1.1.1 installs in Docker mode on one x86_64 Linux host with the installer, and on Kubernetes with the Helm chart `charts/libredb-platform`, whose jobs run the installer's Kubernetes-mode code; the installer's own `preflight`, `plan`, `apply`, `verify` and `db-script` refuse `mode: kubernetes`. `docs/deploy/install-docker.md` is the customer's install guide and `installer/README.md` the reference of every command and field, so a change to a command, a default or a prerequisite updates both. ```bash diff --git a/charts/libredb-platform/Chart.yaml b/charts/libredb-platform/Chart.yaml index be3e57e..077a6c1 100644 --- a/charts/libredb-platform/Chart.yaml +++ b/charts/libredb-platform/Chart.yaml @@ -8,8 +8,8 @@ type: application # The chart ships in the installer's release, so version and appVersion are both that release, whose images and # Studio chart it pins (installer/release/release.config.json, which installer/test/unit/kubernetes/chart.test.ts # compares, together with installer/package.json). -version: 1.1.0 -appVersion: "1.1.0" +version: 1.1.1 +appVersion: "1.1.1" kubeVersion: ">=1.28.0-0" home: https://libredb.org/platform/ icon: https://raw.githubusercontent.com/libredb/libredb-studio/main/public/logo.svg diff --git a/charts/libredb-platform/README.md b/charts/libredb-platform/README.md index 58aa027..b0abb16 100644 --- a/charts/libredb-platform/README.md +++ b/charts/libredb-platform/README.md @@ -10,7 +10,7 @@ It renders the values as an installation configuration of `mode: kubernetes`, wh ## Install Each installer release `installer-v` publishes the chart under the same version: as `libredb-platform-.tgz` of that GitHub release, in the Helm repository `https://libredb.org/libredb-platform/`, listed on Artifact Hub, and as an OCI artifact. -The first release with the chart is 1.1.0. +The first release with the chart is 1.1.1. ```sh helm repo add libredb-platform https://libredb.org/libredb-platform/ diff --git a/charts/libredb-platform/files/libredb-jobs.cjs.gz b/charts/libredb-platform/files/libredb-jobs.cjs.gz index 774358d69ca60135d3646627eef88e48511de251..3036dfbf4e9f11f50bd96a1175d63ae5d5c4bde8 100644 GIT binary patch delta 6166 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 diff --git a/docs/deploy/install-docker.md b/docs/deploy/install-docker.md index 68d8d84..3d4c3fc 100644 --- a/docs/deploy/install-docker.md +++ b/docs/deploy/install-docker.md @@ -1,6 +1,6 @@ # Install LibreDB with Docker -This guide installs LibreDB 1.1.0 on one x86_64 Linux host with Docker. +This guide installs LibreDB 1.1.1 on one x86_64 Linux host with Docker. The install is tested with Docker Compose on a plain host and on a host that runs a Docker Swarm, such as one of Dokploy or CapRover. The installer, `libredb-installer`, runs on that host as root and deploys PostgreSQL, Keycloak, LibreDB Platform, LibreDB Studio and a Caddy edge as the Docker Compose project `libredb`. The guide takes the shortest path: a PostgreSQL and a Keycloak that the installer runs itself, one DNS name per app, and certificates from the installer's internal CA. @@ -62,7 +62,7 @@ The installer treats the token as a secret and never prints it, so keep the file The installer is one binary, published with a file of checksums on this repository's [GitHub releases](https://github.com/libredb/libredb-platform/releases): ```sh -V=1.1.0 +V=1.1.1 B=https://github.com/libredb/libredb-platform/releases/download/installer-v$V mkdir -p ~/libredb-$V && cd ~/libredb-$V curl -fL -O "$B/libredb-installer-linux-x64" -O "$B/SHA256SUMS" @@ -71,7 +71,7 @@ chmod 0755 libredb-installer-linux-x64 ./libredb-installer-linux-x64 version ``` -Expected: `sha256sum` prints `libredb-installer-linux-x64: OK`, and `version` prints `release 1.1.0`. +Expected: `sha256sum` prints `libredb-installer-linux-x64: OK`, and `version` prints `release 1.1.1`. `sha256sum -c` needs no account, and it shows that the download is complete and matches the release's checksums. To check that this repository's release workflow built the binary, verify its attestation with the [GitHub CLI](https://cli.github.com), which needs a GitHub login (`gh auth login`): @@ -134,7 +134,7 @@ The configuration never holds a secret or a license token itself, only the paths ## Check the host and the configuration ```sh -cd ~/libredb-1.1.0 +cd ~/libredb-1.1.1 ./libredb-installer-linux-x64 validate -c /etc/libredb/libredb.yaml ./libredb-installer-linux-x64 preflight -c /etc/libredb/libredb.yaml ./libredb-installer-linux-x64 plan -c /etc/libredb/libredb.yaml diff --git a/docs/deploy/install-kubernetes.md b/docs/deploy/install-kubernetes.md index fa4f89c..76a41e0 100644 --- a/docs/deploy/install-kubernetes.md +++ b/docs/deploy/install-kubernetes.md @@ -1,6 +1,6 @@ # Install LibreDB on Kubernetes -This guide installs LibreDB 1.1.0 on a Kubernetes cluster with the Helm chart [`charts/libredb-platform`](../../charts/libredb-platform). +This guide installs LibreDB 1.1.1 on a Kubernetes cluster with the Helm chart [`charts/libredb-platform`](../../charts/libredb-platform). The chart is tested on vanilla Kubernetes, on clusters that Rancher manages and on OpenShift 4. The chart deploys LibreDB Platform, its migrate job and LibreDB Studio under governance, and by default a PostgreSQL server and a Keycloak that it runs itself. It is the installer's Kubernetes mode driven by Helm: the chart renders its values as an installation configuration of `mode: kubernetes`, and its jobs run the installer's own code on it, so a Helm install gets the same secrets, certificates, environments, PostgreSQL provisioning and Keycloak realm as a [Docker install](install-docker.md) of the same configuration. @@ -49,7 +49,7 @@ Set `ingress.className` and `studio.ingress.className` when the cluster has no d ## Install Each installer release `installer-v` publishes the chart under the same version: as `libredb-platform-.tgz` of that GitHub release, in the Helm repository `https://libredb.org/libredb-platform/`, listed on Artifact Hub, and as an OCI artifact. -The first release with the chart is 1.1.0. +The first release with the chart is 1.1.1. ```sh helm repo add libredb-platform https://libredb.org/libredb-platform/ diff --git a/installer/package.json b/installer/package.json index de5f00f..88a41bd 100644 --- a/installer/package.json +++ b/installer/package.json @@ -1,6 +1,6 @@ { "name": "libredb-installer", - "version": "1.1.0", + "version": "1.1.1", "private": true, "license": "Elastic-2.0", "type": "module", diff --git a/installer/release/history/1.1.1.json b/installer/release/history/1.1.1.json new file mode 100644 index 0000000..7a49eeb --- /dev/null +++ b/installer/release/history/1.1.1.json @@ -0,0 +1,53 @@ +{ + "version": "1.1.1", + "images": { + "platform": { + "repository": "ghcr.io/libredb/libredb-platform", + "version": "1.1.0", + "digest": "sha256:56d89d9cbb7fde237a1e8af51bb155c276352bf1f7719f8c651b9f5b37213d92" + }, + "studio": { + "repository": "ghcr.io/libredb/libredb-studio", + "version": "1.0.0", + "digest": "sha256:0cb0177dd2789534f2dbfbc6673104ec0ce70ee82815f5fe9bec5efe3d329ce3" + }, + "keycloak": { + "repository": "quay.io/keycloak/keycloak", + "version": "26.8.1", + "digest": "sha256:79c623a22abacf3fe6c00a5fb30f5b7843d717b234033b80995891c06116d244" + }, + "postgres": { + "repository": "docker.io/library/postgres", + "version": "18.6", + "digest": "sha256:74935e72241653ca55e0414067e6d8763aceb8a810eb51b452253ec3dcfc4336" + }, + "edge": { + "repository": "docker.io/library/caddy", + "version": "2.11.7", + "digest": "sha256:685ae3d7c34d9b5f8caeddc5d14051db7bbd88ff1f5a2fa0c16bd8ca328fb7af" + } + }, + "studioChart": { + "name": "libredb-studio", + "version": "0.1.100", + "repository": "https://libredb.org/libredb-studio/", + "sha256": "f9bf702a427bfd402f1d9525ff0be0f36c5e2618a77668fc9d5562faddc890b0" + }, + "minimums": { + "dockerEngine": "28.0.0", + "compose": "2.24.0", + "kubernetes": "1.28.0" + }, + "studio": { + "logoutHintVerified": true, + "reportedVersion": "1.0.0" + }, + "contracts": { + "platformPublishes": [ + 1 + ], + "studioSupports": [ + 1 + ] + } +} diff --git a/installer/release/release.config.json b/installer/release/release.config.json index 498efd1..ee7bd1a 100644 --- a/installer/release/release.config.json +++ b/installer/release/release.config.json @@ -1,5 +1,5 @@ { - "version": "1.1.0", + "version": "1.1.1", "images": { "platform": { "repository": "ghcr.io/libredb/libredb-platform",