Add Docker image release pipeline - #10
Merged
Merged
Conversation
Publishes keeper/gchat-app to DockerHub for linux/amd64 and linux/arm64. - ci.yml builds both architectures on pull requests and runs a smoke test - docker-release.yml publishes :vX.Y.Z and :<short-sha> on a version tag - docker-promote-latest.yml moves :latest by copying an already-published digest, so :latest resolves to an image that was verified in a deployment - Taskfile provides the tag/tag-rc/promote entry points and dev helpers - Dockerfile: Node 22, and npm ci against the lockfile with no fallback - Add .dockerignore, docker-compose.example.yml, CHANGELOG.md, RELEASING.md - Fix the README Docker section, which referenced a docker-compose.yml that gchat-app-setup generates rather than one committed to the repo - Ignore the generated docker-compose.yml; it embeds a KSM config and API key - Remove the setup:pubsub script; scripts/setup_pubsub.js does not exist
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the release pipeline for
keeper/gchat-app, published to DockerHub forlinux/amd64andlinux/arm64.ci.yml— builds both architectures on pull requests and pushes tomain, and runs the offline flow plus a container smoke testdocker-release.yml— on av*tag, publishes:vX.Y.Zand:<short-sha>; never modifies:latestdocker-promote-latest.yml— manual step that moves:latestby copying an already-published digestAlso adds
Taskfile.yml,.dockerignore,docker-compose.example.yml,CHANGELOG.mdandRELEASING.md; moves the image to Node 22 withnpm ciagainst the lockfile and no fallback; and fixes the README Docker section, which referenced adocker-compose.ymlthatgchat-app-setupgenerates rather than one committed here.Context
Keeper Commander's
gchat-app-setupgenerates customer compose files that pinkeeper/gchat-app:latest, but that image has never been published, so the documented setup flow cannot complete. This repository had no release plumbing.Two design points worth noting during review:
:latestis moved by copying a published digest rather than by rebuilding, so the image customers receive is the same one verified in a real deployment. It also cannot be pointed at a prerelease or moved backwards.docker pushwould publish a single-architecture image.The release process is documented in
RELEASING.md.Required before the first release
A GitHub environment named
releaseholdingDOCKERHUB_USERNAMEandDOCKERHUB_TOKENas environment secrets, with read and write access tokeeper/gchat-app.