From 50859c07ab516dc04d0bbe51c45dad9ffee34f16 Mon Sep 17 00:00:00 2001 From: Jason Lynch Date: Wed, 26 Aug 2026 09:39:15 -0400 Subject: [PATCH 1/2] feat: add spock 5.0.11 images to manifest Adds the latest Spock 5.0.11 images to `version-manifest.json` and sets the default version to Postgres 18.6 + Spock 5.0.11. PLAT-728 --- .../swarm/available_upgrades_test.go | 4 ++-- .../orchestrator/swarm/version-manifest.json | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/server/internal/orchestrator/swarm/available_upgrades_test.go b/server/internal/orchestrator/swarm/available_upgrades_test.go index 133d7a17..1a007c20 100644 --- a/server/internal/orchestrator/swarm/available_upgrades_test.go +++ b/server/internal/orchestrator/swarm/available_upgrades_test.go @@ -39,8 +39,8 @@ func TestVersions_AvailableUpgrades(t *testing.T) { }) t.Run("returns nil when no newer entries exist (already at latest)", func(t *testing.T) { - // 18.4 is the newest in pg18 bucket — no upgrades available - current := ds.MustParsePgEdgeVersion("18.4", "5") + // 18.6 is the newest in pg18 bucket — no upgrades available + current := ds.MustParsePgEdgeVersion("18.6", "5") upgrades := v.AvailableUpgrades(current) assert.Nil(t, upgrades) }) diff --git a/server/internal/orchestrator/swarm/version-manifest.json b/server/internal/orchestrator/swarm/version-manifest.json index 55bf6c01..54ef5cab 100644 --- a/server/internal/orchestrator/swarm/version-manifest.json +++ b/server/internal/orchestrator/swarm/version-manifest.json @@ -32,6 +32,12 @@ "image": "pgedge-postgres:16.14-spock5.0.10-standard-1", "stability": "stable" }, + { + "postgres_version": "16.15", + "spock_version": "5", + "image": "pgedge-postgres:16.15-spock5.0.11-standard-1", + "stability": "stable" + }, { "postgres_version": "17.6", "spock_version": "5", @@ -62,6 +68,12 @@ "image": "pgedge-postgres:17.10-spock5.0.10-standard-1", "stability": "stable" }, + { + "postgres_version": "17.11", + "spock_version": "5", + "image": "pgedge-postgres:17.11-spock5.0.11-standard-1", + "stability": "stable" + }, { "postgres_version": "18.0", "spock_version": "5", @@ -90,6 +102,12 @@ "postgres_version": "18.4", "spock_version": "5", "image": "pgedge-postgres:18.4-spock5.0.10-standard-1", + "stability": "stable" + }, + { + "postgres_version": "18.6", + "spock_version": "5", + "image": "pgedge-postgres:18.6-spock5.0.11-standard-1", "stability": "stable", "default": true }, From 16c580dfce0fe196889a0ce0e8eb6a35fc4fd508 Mon Sep 17 00:00:00 2001 From: Jason Lynch Date: Wed, 26 Aug 2026 09:40:47 -0400 Subject: [PATCH 2/2] chore: add manifest option to dev-watch Adds the ability to switch between three different manifest sources by specifying the `DEV_IMAGE_MANIFEST` environment variable with `make dev-watch`: - `DEV_IMAGE_MANIFEST=local` - the local version-manifest.json in the repository. - `DEV_IMAGE_MANIFEST=staging` - the published staging manifest. - `DEV_IMAGE_MANIFEST=release` - the published release manifest. For example: ```sh make dev-watch DEV_IMAGE_MANIFEST=staging ``` This option defaults to `local`. PLAT-728 --- Makefile | 16 ++++++++++++++++ docker/control-plane-dev/docker-compose.yaml | 13 +++++++++++++ docs/development/running-locally.md | 19 +++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/Makefile b/Makefile index dc4d59ab..994f9d61 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ CI ?= false DEBUG ?= 0 LOG_LEVEL ?= info DEV_IMAGE_REPO ?= ghcr.io/pgedge +DEV_IMAGE_MANIFEST ?= local CONTROL_PLANE_IMAGE_REPO ?= host.docker.internal:5000/control-plane TEST_RERUN_FAILS ?= 0 TEST_DISABLE_CACHE ?= 0 @@ -26,6 +27,20 @@ CLUSTER_TEST_DATA_DIR ?= DEV_LIMA_OS ?= rocky-9 DEV_LIMA_USE_STAGING_PACKAGES ?= false +ifeq ($(DEV_IMAGE_MANIFEST),local) + dev_manifest_vars=DEV_MANIFEST_PATH=/version-manifest.json \ + DEV_MANIFEST_URL="" +else ifeq ($(DEV_IMAGE_MANIFEST),staging) + dev_manifest_vars=DEV_MANIFEST_URL=https://downloads.pgedge.com/manifests/staging/control-plane/version-manifest.json \ + DEV_MANIFEST_PATH="" +else ifeq ($(DEV_IMAGE_MANIFEST),release) + dev_manifest_vars=DEV_MANIFEST_URL=https://downloads.pgedge.com/manifests/release/control-plane/version-manifest.json \ + DEV_MANIFEST_PATH="" +else +$(error Invalid DEV_IMAGE_MANIFEST '$(DEV_IMAGE_MANIFEST)'. Valid options are 'local', 'staging', and 'release') +endif + + ci_enabled=$(filter true,$(CI)) docker_swarm_state=$(shell docker info --format '{{.Swarm.LocalNodeState}}') buildx_builder=$(if $(ci_enabled),"control-plane-ci","control-plane") @@ -34,6 +49,7 @@ docker_compose_dev=WORKSPACE_DIR=$(shell pwd) \ DEBUG=$(DEBUG) \ LOG_LEVEL=$(LOG_LEVEL) \ DEV_IMAGE_REPO=$(DEV_IMAGE_REPO) \ + $(dev_manifest_vars) \ docker compose -f ./docker/control-plane-dev/docker-compose.yaml docker_compose_ci=docker compose -f ./docker/control-plane-ci/docker-compose.yaml e2e_args=-tags=e2e_test -count=1 -timeout=45m \ diff --git a/docker/control-plane-dev/docker-compose.yaml b/docker/control-plane-dev/docker-compose.yaml index bebbcae5..fd21b0b0 100644 --- a/docker/control-plane-dev/docker-compose.yaml +++ b/docker/control-plane-dev/docker-compose.yaml @@ -16,6 +16,8 @@ services: - PGEDGE_DATA_DIR=${WORKSPACE_DIR}/docker/control-plane-dev/data/host-1 - PGEDGE_LOGGING__LEVEL=${LOG_LEVEL:-info} - PGEDGE_DOCKER_SWARM__IMAGE_REPOSITORY_HOST=${DEV_IMAGE_REPO:-ghcr.io/pgedge} + - PGEDGE_DOCKER_SWARM__MANIFEST_PATH=${DEV_MANIFEST_PATH} + - PGEDGE_DOCKER_SWARM__MANIFEST_URL=${DEV_MANIFEST_URL} healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3000/v1/version"] interval: 2s @@ -25,6 +27,7 @@ services: - ./config.json:/config.json - ./data:${WORKSPACE_DIR}/docker/control-plane-dev/data - /var/run/docker.sock:/var/run/docker.sock + - ../../server/internal/orchestrator/swarm/version-manifest.json:/version-manifest.json:ro network_mode: host host-2: extends: @@ -38,6 +41,8 @@ services: - PGEDGE_ETCD_SERVER__CLIENT_PORT=2479 - PGEDGE_LOGGING__LEVEL=${LOG_LEVEL:-info} - PGEDGE_DOCKER_SWARM__IMAGE_REPOSITORY_HOST=${DEV_IMAGE_REPO:-ghcr.io/pgedge} + - PGEDGE_DOCKER_SWARM__MANIFEST_PATH=${DEV_MANIFEST_PATH} + - PGEDGE_DOCKER_SWARM__MANIFEST_URL=${DEV_MANIFEST_URL} healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3001/v1/version"] interval: 2s @@ -55,6 +60,8 @@ services: - PGEDGE_ETCD_SERVER__CLIENT_PORT=2579 - PGEDGE_LOGGING__LEVEL=${LOG_LEVEL:-info} - PGEDGE_DOCKER_SWARM__IMAGE_REPOSITORY_HOST=${DEV_IMAGE_REPO:-ghcr.io/pgedge} + - PGEDGE_DOCKER_SWARM__MANIFEST_PATH=${DEV_MANIFEST_PATH} + - PGEDGE_DOCKER_SWARM__MANIFEST_URL=${DEV_MANIFEST_URL} healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3002/v1/version"] interval: 2s @@ -71,6 +78,8 @@ services: - PGEDGE_ETCD_MODE=client - PGEDGE_LOGGING__LEVEL=${LOG_LEVEL:-info} - PGEDGE_DOCKER_SWARM__IMAGE_REPOSITORY_HOST=${DEV_IMAGE_REPO:-ghcr.io/pgedge} + - PGEDGE_DOCKER_SWARM__MANIFEST_PATH=${DEV_MANIFEST_PATH} + - PGEDGE_DOCKER_SWARM__MANIFEST_URL=${DEV_MANIFEST_URL} healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3003/v1/version"] interval: 2s @@ -87,6 +96,8 @@ services: - PGEDGE_ETCD_MODE=client - PGEDGE_LOGGING__LEVEL=${LOG_LEVEL:-info} - PGEDGE_DOCKER_SWARM__IMAGE_REPOSITORY_HOST=${DEV_IMAGE_REPO:-ghcr.io/pgedge} + - PGEDGE_DOCKER_SWARM__MANIFEST_PATH=${DEV_MANIFEST_PATH} + - PGEDGE_DOCKER_SWARM__MANIFEST_URL=${DEV_MANIFEST_URL} healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3004/v1/version"] interval: 2s @@ -103,6 +114,8 @@ services: - PGEDGE_ETCD_MODE=client - PGEDGE_LOGGING__LEVEL=${LOG_LEVEL:-info} - PGEDGE_DOCKER_SWARM__IMAGE_REPOSITORY_HOST=${DEV_IMAGE_REPO:-ghcr.io/pgedge} + - PGEDGE_DOCKER_SWARM__MANIFEST_PATH=${DEV_MANIFEST_PATH} + - PGEDGE_DOCKER_SWARM__MANIFEST_URL=${DEV_MANIFEST_URL} healthcheck: test: ["CMD", "curl", "-fsS", "http://localhost:3005/v1/version"] interval: 2s diff --git a/docs/development/running-locally.md b/docs/development/running-locally.md index 0b255e4b..a8ba67d7 100644 --- a/docs/development/running-locally.md +++ b/docs/development/running-locally.md @@ -196,6 +196,25 @@ This is an example remote debugging configuration for VSCode: After attaching the debugger, the server will start normally. +#### Changing Manifests + +You can change the manifest source by specifying the `DEV_IMAGE_MANIFEST` environment +variable when you run `make dev-watch`. This environment currently supports three different manifest sources: + +```sh +# 'local' is the default option. This will use the local version manifest +# server/internal/orchestrator/swarm/version-manifest.json +make dev-watch DEV_IMAGE_MANIFEST=local + +# This will use the published staging manifest +# https://downloads.pgedge.com/manifests/staging/control-plane/version-manifest.json +make dev-watch DEV_IMAGE_MANIFEST=staging + +# This will use the published release manifest +# https://downloads.pgedge.com/manifests/release/control-plane/version-manifest.json +make dev-watch DEV_IMAGE_MANIFEST=release +``` + ### API Documentation The `docker-compose.yaml` file for this configuration includes an API