Container images
Tags, architectures, build schedule, and scanning.
Images are published to the GitHub Container registry as ghcr.io/mcanouil/quarto-codespaces.
docker pull ghcr.io/mcanouil/quarto-codespaces:latestArchitectures
release and prerelease are built on native runners, ubuntu-latest for linux/amd64 and ubuntu-24.04-arm for linux/arm64, then combined into a multi-architecture manifest. Docker picks the right one automatically, so Apple Silicon and ARM servers run natively.
The version-pinned images (1.0 … 1.10) are linux/amd64 only. They still run on ARM hosts through emulation, more slowly.
Build schedule
The Build: Docker Images workflow runs:
- on every published release;
- every Sunday at 06:00 UTC;
- on demand, through
workflow_dispatch; - on pull requests, as a build check that does not publish.
Scheduled rebuilds mean the image tracks upstream security updates for R, Python, Julia, TinyTeX, and Chromium without waiting for a release.
After each publishing build, the workflow runs quarto check inside the fresh image and commits the transcript to Quarto check output, then deletes untagged package versions from the registry.
Security scanning
The Security: Docker Image Scan workflow runs after each successful build, and on demand. It pulls the published release image and runs Trivy with the vulnerability and secret scanners at CRITICAL, HIGH, and MEDIUM severity. Results are uploaded as SARIF to the repository’s code scanning alerts and kept as a workflow artifact for 30 days.
Provenance
Images carry OCI annotations and labels set at build time: title, description, authors, URL, source, licence, and a version string combining the release tag (or short commit SHA) with the full commit SHA.
docker buildx imagetools inspect ghcr.io/mcanouil/quarto-codespaces:release