Add reclaim-disk-space, report-disk-space, and configure-azure-sccache actions - #23
Merged
Conversation
…e actions These are the reusable building blocks distilled from the linux-kernel-oci disk-pressure and sccache work, extracted so xen-oci and later builders consume the same logic instead of copies. reclaim-disk-space deletes preinstalled runner tooling by category. The categories that can break other workflows are opt-in rather than default: remove-toolcache wipes /opt/hostedtoolcache (which setup-* actions and installers like cosign-installer depend on - the action documents that it must run before them), and remove-rust would break runner-side Rust builds and setup-cargo-make's ~/.cargo/bin cache. Reports the KB freed as an output and prints the resulting disk state. report-disk-space prints all real filesystems with type and mount point, pseudo-mounts filtered. Runner disk topology varies by class and generation and public documentation is unreliable, so every job log should carry the ground truth, especially for ENOSPC post-mortems. configure-azure-sccache selects between read-write and read-only Azure connection strings from an explicit allowlist of maintainer-gated trigger events, failing closed for everything else so unreviewed code can never write to the shared cache. Non-secret settings (mode, container, key prefix) are exported via GITHUB_ENV, but the connection string is deliberately only a step output: GITHUB_ENV exports land in the process environment of every subsequent step, including third-party actions, whereas an output reaches only the steps that explicitly bind it as env at the point of use. That step-env binding is the single consumption contract for every caller; only the final hop differs, dictated by which side of docker's build/run divide the compile lives on: a runtime compile (docker run, linux-kernel-oci) passes the variable through by name with -e, while a build-time compile (RUN inside buildx, xen-oci) must use a BuildKit secret mount fed via secret-envs, since runner env does not reach RUN steps and build-args would persist the value into image history. Log masking is value-based and unaffected by the transport. Signed-off-by: Steven Noonan <steven@edera.dev>
tycho
requested review from
alexandermerritt,
azenla,
bleggett and
kaniini
as code owners
July 15, 2026 18:31
azenla
approved these changes
Jul 15, 2026
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.
These are the reusable building blocks from the
linux-kernel-ocidisk-pressure andsccachework, extracted soxen-ociand other future builders consume the same logic instead of copies.reclaim-disk-spacedeletes preinstalled runner tooling by category. The categories that can break other workflows are opt-in rather than default:remove-toolcachewipes/opt/hostedtoolcache(which setup-* actions and installers like cosign-installer depend on - the action documents that it must run before them), andremove-rustwould break runner-side Rust builds andsetup-cargo-make's~/.cargo/bincache. Reports the KB freed as an output and prints the resulting disk state.report-disk-spaceprints all real filesystems with type and mount point, pseudo-mounts filtered. Runner disk topology varies by class and generation and public documentation is unreliable, so every job log should carry the ground truth, especially forENOSPCpost-mortems.configure-azure-sccacheselects between read-write and read-only Azure connection strings from an explicit allowlist of maintainer-gated trigger events, failing closed for everything else so unreviewed code can never write to the shared cache. Non-secret settings (mode, container, key prefix) are exported viaGITHUB_ENV, but the connection string is deliberately only a step output:GITHUB_ENVexports land in the process environment of every subsequent step, including third-party actions, whereas an output reaches only the steps that explicitly bind it as env at the point of use. That step-env binding is the single consumption contract for every caller; only the final hop differs, dictated by which side of docker's build/run divide the compile lives on: a runtime compile (docker run,linux-kernel-oci) passes the variable through by name with-e, while a build-time compile (RUNinsidebuildx,xen-oci) must use a BuildKit secret mount fed via secret-envs, since runner env does not reach RUN steps and build-args would persist the value into image history. Log masking is value-based and unaffected by the transport.