Skip to content

ci: scope concurrency per ref and reuse cache on pull requests - #155

Merged
mcanouil merged 12 commits into
mainfrom
ci/build-cache
Jul 26, 2026
Merged

ci: scope concurrency per ref and reuse cache on pull requests#155
mcanouil merged 12 commits into
mainfrom
ci/build-cache

Conversation

@mcanouil

Copy link
Copy Markdown
Owner

The concurrency group was keyed on the event name, so two open pull requests cancelled each other's builds. It is now keyed on the ref.

Pull request builds rebuilt every layer from scratch. They now pull the published per-architecture image as a cache source, while scheduled, dispatched, and release builds keep building without cache so the weekly images stay fresh.

mcanouil added 6 commits July 26, 2026 12:44
…ersion option

The BSD-only 'sed -i ""' form fails on Linux where the script runs.
The decktape feature option was named 'node' while its install script
reads VERSION, so the option value never reached the script.
GitHub release URLs differ between latest and pinned tags; the single
URL pattern only worked for latest. Remote installer downloads now
enforce HTTPS with TLS 1.2 and fail on HTTP errors so error pages are
never piped to sh. Google Chrome apt repository switched to HTTPS.
Unused USERNAME resolution blocks and leftover VERSION variable
removed from feature scripts that never used them.
The uv and quarto-computing-dependencies features exist in both
.github/.devcontainer (canonical) and .devcontainer/universal, and the
copies had drifted (python version pin, platform gate, arch guard).
Symlinking was ruled out: the devcontainer CLI fails to fetch local
features through symlinked directories. Copies are now identical, the
universal config keeps its amd64-only behaviour via the
installOnPlatforms option, and a check-feature-sync job fails the
build when the copies diverge.
The 3.13.9 pin worked around devcontainers/features#1501, which broke
installing the python feature at latest. Upstream fix is merged and
released, so both feature copies return to latest.

Closes #54
Images were built for linux/amd64 only, and the arm64 path was blocked
by Google Chrome, which has no arm64 Debian package. The chrome feature
now installs Chromium from Playwright's arm64 builds and exposes the
browser at /usr/local/bin/chromium on both architectures, wired to
Quarto and puppeteer through QUARTO_CHROMIUM and
PUPPETEER_EXECUTABLE_PATH. Decktape no longer downloads its own
amd64-only Chromium and installs before the chrome feature so its
Node.js is the one used to fetch Chromium.

Release and prerelease images build natively and in parallel on
ubuntu-latest and ubuntu-24.04-arm, publish per-architecture tags, and
a merge job combines them into the published multi-architecture tags.
QEMU emulation is gone, which was the source of the very long arm64
build times. Versioned images stay amd64-only because Quarto releases
before 1.4 have no arm64 packages.

Closes #37
The concurrency group keyed on the event name, so two open pull
requests cancelled each other's builds. Pull request builds also
rebuilt every layer from scratch; they now pull the published
per-architecture image as a cache source, while scheduled, dispatched,
and release builds keep building without cache.
@mcanouil mcanouil added the Type: CI/CD 🤖 Issues related to continuous integration and deployment label Jul 26, 2026
@mcanouil mcanouil self-assigned this Jul 26, 2026
mcanouil added 3 commits July 26, 2026 13:20
The repository ruleset requires status checks named 'Build - Quarto
release' and 'Build - Quarto prerelease'. The build jobs now carry an
architecture suffix, so those checks would never report again and every
pull request would stay blocked. A build-status job reports them from
the architecture build results.
# Conflicts:
#	.devcontainer/universal/uv/install.sh
@mcanouil
mcanouil changed the base branch from feat/arm64-native to main July 26, 2026 12:03
@mcanouil
mcanouil merged commit ff6bf52 into main Jul 26, 2026
2 checks passed
@mcanouil
mcanouil deleted the ci/build-cache branch July 26, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: CI/CD 🤖 Issues related to continuous integration and deployment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant