ci: make ghcr the only target and the published image runnable - #3
Merged
Conversation
Docker Hub livepeer/ is a curated product namespace and this is an example, so drop the opt-in second target rather than leave a path into it. Matches runner-app-examples. compose.yml builds from source and named no image, so nothing could land on the published one without hand-editing a compose file. An overlay adds it, keeping the registry out of the default path; at ~15 GB pulling is the sane route for anyone not changing the Dockerfile. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Tag a v* release as stable, and declare the OCI labels where they are actually applied. metadata-action passes labels as --label, which beats anything baked into the image, so Dockerfile LABELs were both redundant and contradicted on licence: they said Apache-2.0 while the generated default said MIT. The image carries both, so it says so. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Matches what runner-app-examples landed. `pull_policy: build` keeps a bare `up` building from source, so naming the image cannot silently run a published one over a contributor's code, and `--pull always` reaches the registry. One file rather than two to keep in step. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Follows runner-app-examples#83: examples are not production containers, so they publish to GHCR and stay out of the Docker Hub product namespace.
Publishing here was already GHCR-first, so this is the rest of that decision.
Docker Hub is no longer a target
build.ymlcarried an opt-in second target viaDOCKERHUB_NAMESPACEplusDOCKERHUB_USERNAME/DOCKERHUB_TOKEN. Docker Hublivepeer/is a curated product namespace that examples stay out of, so the path is removed rather than left available.The published image is now runnable
compose.ymlbuilt from source and named no image, so nothing could land onghcr.io/livepeer/streamdiffusion-livepeer-runnerwithout hand-editing. That matters more here than in the examples repo: the image is ~15 GB, so pulling rather than building is the difference between a download and a long local build.pull_policy: buildis what makes naming the image safe. Compose's default policy fetches a remote-resolvable image when it is missing locally even for a service with abuildsection, so without it a clean checkout would silently run the published image instead of the contributor's code.Image conventions
stabletag onv*releases, matching the examples' tag scheme, now documented in the README.LABELs into metadata-action, where the examples declare them. metadata-action passes labels as--label, which beats anything baked into the image, so theLABELs were both redundant and contradicted on licence: they saidApache-2.0while the generated default saidMIT. It now saysApache-2.0 AND MIT, which is what the image actually carries.Deliberate divergences from the examples, all size-driven: no PR builds, no
type=ghalayer cache (15 GB would blow the 10 GB Actions cache), and the disk-reclaim step.Testing
docker compose configpasses; a clean-statedocker compose up -dbuilds from source and does not attempt a pull, verified by the fact that the package does not exist yet, so a pull would fail loudly.--pull always, for the same reason. Worth one manual run after this merges and CI publishes.