feat: add base image mirror workflow and docs conventions#33
Merged
Conversation
Add a reusable GitHub Actions workflow that mirrors a container image from an upstream registry into GHCR, copying only when the upstream digest changes (idempotent sync using crane, multi-arch preserving). - _mirror-image.yml: reusable (workflow_call) digest-check + copy logic - mirror-python.yml: daily caller for docker.io/library/python:3.14-slim -> ghcr.io/toddysm/base/python:3.14-slim, with manual force option Also add a topic-based docs/ structure (contributing, architecture, guides, reference) and document the workflow naming conventions that keep mirror-* and build-* workflows separated.
There was a problem hiding this comment.
Pull request overview
Adds a first-class GitHub Actions “image mirror” capability (reusable workflow + thin per-image caller) and introduces a topic-based docs/ structure with workflow naming conventions to keep mirror/build workflows clearly separated.
Changes:
- Added a reusable
workflow_callworkflow to digest-check and mirror an upstream image into GHCR (copy only on digest change, with optional force). - Added a scheduled + manually triggerable mirror workflow for
python:3.14-slimusing the reusable workflow. - Added
docs/index + section READMEs and documented workflow naming/organization conventions.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/_mirror-image.yml |
Reusable mirror workflow implementing digest comparison + crane copy and step summaries. |
.github/workflows/mirror-python.yml |
Caller workflow that schedules and dispatches mirroring of python:3.14-slim into GHCR. |
docs/README.md |
Adds a docs index describing the new topic-based structure and links to key conventions. |
docs/contributing/workflow-naming.md |
Documents mirror/build/reusable workflow naming, display names, and concurrency conventions. |
docs/architecture/README.md |
Adds architecture docs section placeholder entrypoint. |
docs/guides/README.md |
Adds guides docs section placeholder entrypoint. |
docs/reference/README.md |
Adds reference docs section placeholder entrypoint. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Adds the first image mirror GitHub Actions workflow plus a docs structure and naming conventions.
What this does
Mirrors
docker.io/library/python:3.14-sliminto GHCR asghcr.io/toddysm/base/python:3.14-slim, copying only when the upstream digest changes (idempotent sync).crane copypreserves the multi-arch manifest list.Structure (reusable workflow + caller)
.github/workflows/_mirror-image.yml— reusable (workflow_call) workflow holding all digest-check + copy logic..github/workflows/mirror-python.yml— thin caller: dailyschedule(06:00 UTC) +workflow_dispatch(withforce), passing the python-specific inputs.Naming convention
mirror-<image>.ymlfor image mirrors,build-<app>.ymlfor app builds, leading_for reusable workflows — so mirror and build workflows never conflict.docs/contributing/workflow-naming.md.Docs folder
Topic-based, flexible layout:
docs/contributing/,docs/architecture/,docs/guides/,docs/reference/, withdocs/README.mdas the index.Notes
GITHUB_TOKEN(packages: write); Docker Hub pulled anonymously.imjasonh/setup-crane@v0.4).