ci: scope concurrency per ref and reuse cache on pull requests - #155
Merged
Conversation
…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.
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
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.
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.