Publish versioned TimeboardApp images to GHCR#29
Draft
paulkakell wants to merge 27 commits into
Draft
Conversation
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
Publish validated, versioned TimeboardApp container images to GitHub Container Registry and make Docker Compose pull the registry image instead of building locally.
Root cause addressed
Production and demo stacks shared the Compose service alias
timeboardappon the proxy network. The attempted follow-up changed the YAML map key to${CONTAINER_NAME:-timeboardapp}, but Compose interpolation is not a dependable way to create a dynamic service-map key.This PR uses the stable service name
appand registers each stack's uniqueCONTAINER_NAMEas its proxy-facing alias. Production can usetimeboardapp; demo can usetimeboardapp-demo.Changes
00.12.03to00.13.00.build: .withghcr.io/paulkakell/timeboardapp:00.13.00.TIMEBOARDAPP_IMAGEandTIMEBOARDAPP_TAGvalues.CONTAINER_NAMEaliases on both external Docker networks.linux/amd64andlinux/arm64images with version, SHA, andlatesttags..dockerignoreprotection for secrets, data, logs, databases, tests, reports, and repository metadata.python-jose[cryptography]with PyJWT for HS256 tokens, removing the transitiveecdsadependency affected byPYSEC-2026-1325/CVE-2024-23342.Deployment impact
The application, API payloads, database, settings format,
/datalayout, and existing HS256 tokens remain backward compatible. There are no schema changes.The Compose service name changes to
app. Existing automation must use commands such as:docker compose exec app ... docker compose logs -f appFor the initial migration, preserve the production and demo
/datadirectories and run:Recommended shared-network Nginx Proxy Manager upstreams:
Do not use the shared
appalias as a proxy target.Security review
contents: readonly.packages: write.GITHUB_TOKEN.pip-auditgate publication.ecdsa 0.19.2 / PYSEC-2026-1325; the dependency was removed rather than ignored.No known vulnerabilities found.HS256allow-list, existing-token compatibility, and HTTP 401 behavior for malformed tokens.Validation — passed
Final PR head:
6783fbd54cc972aa8af7f0870fe7aec1c3ab0dc3Workflow:
CI and GHCR Image, run29182379078/ run number 6457 passed, 15 warningsin pytestpip checkpassedpip-auditpassed with no known vulnerabilitiesdocker compose configpassed/healthzcontainer smoke test passed and returned version00.13.00The 15 warnings are documented, pre-existing deprecation warnings and are non-blocking for this release. Full evidence and follow-up notes are recorded in
VALIDATION_REPORT_00.13.00.md.The publish job is intentionally skipped for pull requests. It runs after the same validation succeeds on
mainor a matching version tag.Rollback
Pin
TIMEBOARDAPP_TAGto a prior release orsha-<commit>image tag. For the initial migration from the locally built image, retain the old local image until00.13.00is accepted. No database rollback is required.Release artifacts after merge
ghcr.io/paulkakell/timeboardapp:00.13.00ghcr.io/paulkakell/timeboardapp:sha-<commit>ghcr.io/paulkakell/timeboardapp:latestPlatforms:
linux/amd64,linux/arm64.