Skip to content

feat(ci): publish omnigraph-server container image to GHCR on release#340

Merged
aaltshuler merged 2 commits into
mainfrom
feat/publish-container-image
Jul 7, 2026
Merged

feat(ci): publish omnigraph-server container image to GHCR on release#340
aaltshuler merged 2 commits into
mainfrom
feat/publish-container-image

Conversation

@aaltshuler

@aaltshuler aaltshuler commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Adds .github/workflows/publish-image.yml: builds the CLI + server inside a rust:1-bookworm container (matching the Dockerfile's bookworm-slim runtime glibc — host-built ubuntu binaries do not run there), builds the canonical Dockerfile, and pushes ghcr.io/modernrelay/omnigraph-server:<tag> with packages: write via GITHUB_TOKEN.

  • Triggers: v* tag push, plus workflow_dispatch with an explicit tag to backfill an image for a past release (same dual-trigger pattern as release.yml).
  • latest moves only on real tag pushes, never on dispatch backfills.
  • Kept separate from release.yml so an image-publish failure can't block the binary release / Homebrew chain.
  • The image is built with --features omnigraph-server/aws so both bearer-token sources work from one public image.
  • linux/amd64 only for now; arm64 is a natural follow-up.
  • Prints the pushed digest to the step summary so deployments can pin @sha256:….

One-time follow-up after the first publish: set the GHCR package's visibility to Public and link it to this repo.

🤖 Generated with Claude Code


Open in Devin Review

Greptile Summary

This PR adds a GHCR publishing path for the server container image.

  • Adds a release-tag and manual-dispatch workflow for ghcr.io/modernrelay/omnigraph-server.
  • Builds the Rust binaries in a Bookworm builder before packaging the Docker image.
  • Pushes the release tag and only moves latest on real tag pushes.
  • Documents the new CI workflow and public container pull path.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
.github/workflows/publish-image.yml Adds the GHCR image publishing workflow with tag validation for manual dispatches and fully qualified tag checkout.
docs/dev/ci.md Documents the new public image publishing workflow and release/backfill behavior.
docs/user/deployment.md Adds the prebuilt GHCR image as the primary container deployment path.

Reviews (2): Last reviewed commit: "review fixes: validate dispatch tag (exi..." | Re-trigger Greptile

Context used:

  • Context used - AGENTS.md (source)
  • Context used - CLAUDE.md (source)

Build binaries inside a rust:1-bookworm container (matching the
Dockerfile's bookworm-slim runtime glibc) with the aws feature enabled,
then build and push ghcr.io/<owner>/omnigraph-server:<tag>. Separate
from release.yml so an image failure never blocks the binary release,
and a workflow_dispatch backfill of a past tag never re-runs the release
matrix or repoints :latest.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Open in Devin Review

Comment thread .github/workflows/publish-image.yml
Comment thread .github/workflows/publish-image.yml
Comment thread .github/workflows/publish-image.yml Outdated
…flow + GHCR image

- Guard workflow_dispatch: the free-form tag input must name an EXISTING
  v* tag (gh api ref check) and checkout is pinned to refs/tags/<tag>,
  so a branch/SHA can never be published under a release-looking image
  tag (greptile P1).
- docs/dev/ci.md: add the publish-image.yml entry (same-PR docs rule).
- docs/user/deployment.md: document pulling the prebuilt GHCR image.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aaltshuler aaltshuler merged commit d2f9b5c into main Jul 7, 2026
7 checks passed
@aaltshuler aaltshuler deleted the feat/publish-container-image branch July 7, 2026 23:23
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