Skip to content

ci: add CD pipeline for cmd/duckgres-controlplane image#504

Merged
fuziontech merged 1 commit intofeature/dockerfile-controlplanefrom
feature/cd-controlplane-image
May 1, 2026
Merged

ci: add CD pipeline for cmd/duckgres-controlplane image#504
fuziontech merged 1 commit intofeature/dockerfile-controlplanefrom
feature/cd-controlplane-image

Conversation

@fuziontech
Copy link
Copy Markdown
Member

Summary

Adds .github/workflows/container-image-controlplane-cd.yml — publishes duckgres-controlplane:<sha> + duckgres-controlplane:latest as a multi-arch manifest (arm64 + amd64) on every push to main.

Single build per sha — the CP is version-agnostic by design (one image fits all worker fleets), so no DuckDB-version matrix here. Contrast with container-image-worker-cd.yml (PR #502) which produces one duckgres-worker image per (DuckDB version × arch).

Image pipeline now mirrors the binary set

Image Workflow Source
duckgres (existing) container-image-cd.yml Dockerfile
duckgres-worker (PR #502) container-image-worker-cd.yml Dockerfile.worker
duckgres-controlplane (this PR) container-image-controlplane-cd.yml Dockerfile.controlplane (PR #503)

Stacked on PR #503 which adds Dockerfile.controlplane.

🤖 Generated with Claude Code

Adds .github/workflows/container-image-controlplane-cd.yml — publishes
duckgres-controlplane:<sha> + duckgres-controlplane:latest as a multi-
arch manifest (arm64 + amd64) on every push to main.

Single build per sha — the CP is version-agnostic by design (one
image fits all worker fleets), so no DuckDB-version matrix here.
Contrast with container-image-worker-cd.yml (PR #502) which produces
one duckgres-worker image per (DuckDB version × arch).

Together with the existing all-in-one CD (container-image-cd.yml,
unchanged) and the worker matrix CD, the image pipeline now mirrors
the binary set:

  duckgres                container-image-cd.yml             (existing)
  duckgres-worker         container-image-worker-cd.yml      (PR #502)
  duckgres-controlplane   container-image-controlplane-cd.yml (this PR)

Stacked on PR #503 which adds Dockerfile.controlplane.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@fuziontech fuziontech merged commit 3cdf53a into feature/dockerfile-controlplane May 1, 2026
@fuziontech fuziontech deleted the feature/cd-controlplane-image branch May 1, 2026 18:30
fuziontech added a commit that referenced this pull request May 1, 2026
* feat: add Dockerfile.controlplane for the duckdb-free CP image

Builds cmd/duckgres-controlplane (PR #498). The image is the control-
plane Pod's runtime; all SQL execution is routed to remote
duckgres-worker images (Dockerfile.worker), so this image:

  - Does NOT link libduckdb (the controlplane-no-libduckdb CI guard
    from PR #499 enforces it)
  - Does NOT bundle the DuckDB extension downloads — without a DuckDB
    driver they'd be dead weight
  - Is meaningfully smaller than the all-in-one image

CGO is still enabled because the transpiler uses pg_query_go which
links libpg_query. That's a pure Postgres parser, nothing to do with
DuckDB.

Together with Dockerfile.worker (per-DuckDB-version, PR #501) and the
existing all-in-one Dockerfile (unchanged), the image set now mirrors
the binary set:

  duckgres                    (existing) — all-in-one, links libduckdb
  duckgres-worker             (new)      — worker-only, per-DuckDB-version
  duckgres-controlplane       (this PR)  — CP-only, no libduckdb

A CD workflow that publishes the controlplane image (single build per
sha, no DuckDB matrix needed since this binary is version-agnostic) is
the next PR.

Verified locally:
  - go build -o /tmp/duckgres-controlplane ./cmd/duckgres-controlplane
    builds clean (~40MB binary)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* ci: add CD pipeline for cmd/duckgres-controlplane image (#504)

Adds .github/workflows/container-image-controlplane-cd.yml — publishes
duckgres-controlplane:<sha> + duckgres-controlplane:latest as a multi-
arch manifest (arm64 + amd64) on every push to main.

Single build per sha — the CP is version-agnostic by design (one
image fits all worker fleets), so no DuckDB-version matrix here.
Contrast with container-image-worker-cd.yml (PR #502) which produces
one duckgres-worker image per (DuckDB version × arch).

Together with the existing all-in-one CD (container-image-cd.yml,
unchanged) and the worker matrix CD, the image pipeline now mirrors
the binary set:

  duckgres                container-image-cd.yml             (existing)
  duckgres-worker         container-image-worker-cd.yml      (PR #502)
  duckgres-controlplane   container-image-controlplane-cd.yml (this PR)

Stacked on PR #503 which adds Dockerfile.controlplane.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant