boringcache/BoringCache One

Maintained GitHub Action entrypoint for the BoringCache suite across archive caches, proxy-backed modes, and build adapters.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit Jul 9, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: boringcache/one@d39427a8c278c17670e2fbb1b2ba9a699b61075f # v1.13.92

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
cli-versionVersion of BoringCache CLI to install (e.g., v1.0.1). Set to "skip" to disable automatic CLI setup.nov1.13.102
cli-platformOptional CLI target/platform override for advanced diagnostics and compatibility cases (for example linux-amd64 or linux-musl-amd64). Legacy distro aliases are normalized to the generic release asset names.no
setupRuntime setup owner: mise, external, or none. mise auto-detects project tools from mise.toml, .tool-versions, and common version files.nomise
modePrimary cache behavior: auto or archive for portable caches, or a proxy/build adapter mode such as docker, buildkit, bazel, go, gradle, maven, nx-proxy, rust-sccache, or turbo-proxy. Proxy/build modes are pure remote by default; add entries when you want explicit local archive caches too.noauto
presetWorkflow preset for archive-oriented defaults and tool detection: none, rails, ruby, node, node-turbo, python-uv, go, or php-composer. Presets add archive caches; use mode for pure remote adapter flows.nonone
workspaceWorkspace identifier in format namespace/workspace (e.g., my-org/my-project). If not provided, uses repo config workspace or BORINGCACHE_DEFAULT_WORKSPACE/CLI defaults.no
cache-tagHuman-readable cache tag or prefix. Generated archive entries, runtime caches, and proxy tags derive deterministic names from this when you do not set exact overrides.no
runtime-cache-tagOptional exact tag for the mise installs cache. Use this when you want the same runtime cache tag across GitHub Actions, local CLI, and Docker workflows.no
working-directoryProject root used for tool detection and relative cache paths.no.
toolsExplicit mise tools to install, one per line (for example ruby@3.3, node@22). Overrides auto-detected project tools for the same names.no
tool-version-scopeHow generated runtime and archive tags encode tool versions: patch, minor, or major.nopatch
cache-runtimeCache mise tool installs when setup is mise. Shims are regenerated after restore.notrue
read-onlyProxy-backed modes: run without writes when supported.nofalse
save-policyWhether boringcache/one should publish cache updates in the post step: auto (default) saves when event policy and tokens allow it, off keeps the step restore-only by configuration.noauto
save-on-pull-requestAllow save-capable tokens to publish cache updates on pull_request events. Defaults to false so pull requests stay restore-only; missing PR-scoped Docker cache refs should fall back to CLI-planned base/default imports, not require PR writes.nofalse
verifyOptional internal verification for resolved tags: none, check, wait, or warn. check is one-shot; wait and warn poll explicitly. Save-capable tags verify in the post step after save completes.nonone
verify-timeout-secondsTimeout in seconds for verify=wait/warn tag checks and managed Docker/BuildKit cache promotion checks. Values above 900 are clamped to keep verification bounded.no180
verify-require-server-signatureRequire signed cache hits during verification.nofalse
trusted-workspace-signing-key-fingerprintOptional ed25519-sha256 workspace signing key fingerprint. When set, the CLI only accepts signed cache hits from this workspace key.no
diagnosticsAction-level diagnostics: auto follows ACTIONS_STEP_DEBUG, off disables grouped diagnostics, summary emits grouped state, and verbose also tails proxy logs.noauto
diagnostics-log-linesWhen diagnostics includes logs, tail up to this many proxy log lines. Values above 500 are clamped to keep diagnostics bounded.no40
metadata-hintsLow-cardinality proxy session labels as KEY=VALUE pairs, comma-separated or newline-separated. Use this for grouping hints such as phase=seed, project=web, tool=bazel, or benchmark=grpc-bazel.no
proxy-portProxy-backed modes: explicit TCP port from 1 to 65535. Leave blank to use the mode default or an automatically selected port.no
proxy-no-gitProxy-backed modes: disable git scoping.nofalse
proxy-no-platformProxy-backed modes: disable platform scoping.nofalse
contextDocker or BuildKit build context path.no.
dockerfileDockerfile path relative to the working directory or build context.noDockerfile
imageDocker or BuildKit image name (for example ghcr.io/org/app).no
tagsImage tags, comma-separated or newline-separated.nolatest
build-argsBuild arguments as newline-separated KEY=VALUE pairs.no
targetTarget build stage.no
platformsTarget platforms for multi-arch builds.no
pushWhether to push image output to the registry. Must be true or false.nofalse
loadWhether to load Docker image output into the local daemon when supported. Must be true or false.notrue
no-cacheWhether to disable cache usage for Docker or BuildKit builds. Must be true or false.nofalse
provenanceDocker mode only: pass --provenance=true to docker buildx build. Must be true or false.nofalse
sbomDocker mode only: pass --sbom=true to docker buildx build. Must be true or false.nofalse
secretsDocker or BuildKit secrets, newline-separated.no
docker-tool-cacheDocker mode only: expose session-only BoringCache remote-cache config for Turbo, Nx, Bazel, Gradle, Maven, sccache, or Go inside matching Dockerfile RUN steps. Accepts comma- or newline-separated TOOL:TAG values, or plain tool names backed by [adapters.<tool>].tag.no
driverBuildx driver for Docker mode.nodocker-container
docker-commandDocker mode behavior: build (default) runs docker buildx build; setup prepares the managed BuildKit builder. Must be build or setup.nobuild
driver-optsAdditional buildx driver options, newline-separated.no
buildkitd-config-inlineInline BuildKit daemon TOML config for Docker mode.no
managed-buildkit-imageManaged BoringCache BuildKit image. Defaults to the signed release digest; pass an explicit digest for canaries.noghcr.io/boringcache/buildkit@sha256:2f6ddc6319f598180955e89e3a846b259b216458d528912c1477700670c96869
cache-modeBuild cache mode for Docker or BuildKit. Must be min or max.nomax
buildkit-hostBuildKit address for buildctl mode, for example tcp://host:1234 or unix:///run/buildkit/buildkitd.sock.no
buildkit-tls-caTLS CA certificate path or PEM contents for BuildKit.no
buildkit-tls-certTLS client certificate path or PEM contents for BuildKit.no
buildkit-tls-keyTLS client key path or PEM contents for BuildKit.no
buildkit-tls-skip-verifyWhether to skip TLS verification for BuildKit. Must be true or false.nofalse
outputCustom buildctl output. When set, image, tags, and push are ignored in BuildKit mode.no
sshBuildKit SSH specs, newline-separated.no
bazel-versionBazel version for Bazelisk. Sets USE_BAZEL_VERSION when provided or auto-detected via mise.no
bazelrc-linesAdditional newline-separated Bazel rc lines appended after boringcache/one writes the remote cache block.no
gradle-homeGradle user home directory.no~/.gradle
enable-build-cacheWhether to set org.gradle.caching=true in gradle.properties. Must be true or false.notrue
maven-versionMaven version to install when setup=mise and the project does not already pin it.no3.9.9
uv-versionuv version to install for preset=python-uv when the project does not already pin it through mise.no0.9.21
composer-versionComposer version to install for preset=php-composer when the project does not already pin it through mise.no2.9.5
maven-local-repoLocal Maven repository path. Used for archive defaults in Maven mode.no~/.m2/repository
maven-extensions-pathPath to .mvn/extensions.xml. Maven mode ensures the build-cache extension is present here.no.mvn/extensions.xml
maven-build-cache-config-pathPath to .mvn/maven-build-cache-config.xml written by Maven mode.no.mvn/maven-build-cache-config.xml
maven-build-cache-extension-versionVersion of org.apache.maven.extensions:maven-build-cache-extension to configure in Maven mode.no1.2.3
maven-build-cache-idLogical Maven remote build-cache id for the generated config.noboringcache
rust-versionRust version or channel to install when not handled by mise.no
toolchainAlias for rust-version.no
targetsRust target triples to install, comma-separated.no
componentsRust components to install, comma-separated.no
profileRustup profile. Must be minimal, default, or complete.nominimal
cache-cargoWhether to cache cargo registry and git directories. Must be true or false.notrue
cache-cargo-binWhether to cache cargo bin directory. Must be true or false.nofalse
cache-targetWhether to cache the Rust target directory. Must be true or false.notrue
sccacheWhether to enable sccache for Rust builds. Must be true or false.nofalse
sccache-versionsccache version to install when the binary is not already available. Explicit versions require the matching publisher .sha256 release asset.no0.16.0
sccache-cache-sizeMaximum local sccache cache size.no5G
sccache-modesccache storage mode. Must be local or proxy.nolocal
turbo-api-urlExplicit Turbo remote cache endpoint. When omitted, boringcache/one starts a local proxy.no
turbo-tokenTurbo remote cache token.no
turbo-teamTurbo remote cache team slug.no
turbo-portPreferred TCP port for a local Turbo proxy, from 1 to 65535.no
nx-access-tokenNx self-hosted remote cache access token. Defaults to the proxy-internal token.no
nx-portPreferred TCP port for a local Nx self-hosted remote cache proxy, from 1 to 65535.no
cache-profilesOptional repo cache profile names from .boringcache.toml or boringcache.toml (comma-separated or newline-separated). These resolve through the CLI source of truth before any extra raw entries are appended.no
entriesOptional archive entries. Accepts repo/built-in entry ids such as bundler or node_modules, or raw tag:path pairs (one per line; legacy comma lists remain supported and literal commas can be written as \,). Semantic entries resolve through the CLI source of truth. Use this to opt into hybrid local archive caches alongside proxy/build modes.no
pathNewline-separated exact paths and deterministic directory/** roots (actions/cache migration compatibility). Lines use actions/glob trimming and # remains a literal path prefix. Leading-! exclusions support only literal !directory/subdirectory/** subtrees under one directory/** root and cannot share a save with cache-runtime. Commas and internal spaces are literal.no
keyAn explicit key for restoring and saving the cache (actions/cache compatible)no
restore-keysAn ordered list of prefix-matched keys for restoring stale cache if no cache hit occurredno
enableCrossOsArchiveShare one tag across operating systems by disabling platform suffixes and forcing canonical tar archive transport. Equivalent representable content can reuse one tar root; BoringCache does not translate filesystem semantics. Requires CLI v1.13.100+.nofalse
save-alwaysRun the post step to save the cache even if another step fails. Supports the same true spellings as GitHub boolean inputs.nofalse
no-platformDisable automatic platform suffix for tags (CLI --no-platform flag)nofalse
fail-on-cache-missFail the workflow if cache entry is not found (CLI --fail-on-cache-miss flag)nofalse
fail-on-cache-errorFail the workflow when cache restore, save, or proxy work fails. Defaults to false so a successful build remains successful; GitHub continue-on-error may still soften an explicitly strict step.nofalse
require-oci-import-readyDeprecated v1 compatibility input. Fail Docker or BuildKit setup when any planned managed cache ref is unreadable.nofalse
lookup-onlyCheck if a cache entry exists without downloading (CLI --lookup-only flag)nofalse
forceForce save even if cache entry already exists on server (CLI --force flag)nofalse
verboseEnable detailed output (CLI --verbose flag)nofalse
excludeLegacy comma-separated glob patterns to exclude from cache (for example "*.out,*.log").no
exclude-patternsTar exclusion patterns, one per line. Preserves commas and significant whitespace. Requires CLI v1.13.100+ for writable steps.no
allow-external-symlinksAllow external symlinks in content-addressed layouts (CLI --allow-external-symlinks flag). Tar archive transport leaves symlink handling to tar. Requires CLI v1.13.100+.nofalse
namedescription
cache-hitA boolean value indicating an archive or mode-specific cache hit was found
runtime-cache-hitA boolean value indicating the mise runtime cache was restored
diagnostics-levelEffective diagnostics level used by the action: off, summary, or verbose
evidence-pathPath to the local boringcache/one JSON evidence file with restore and post-step state
resolved-modeThe effective cache mode used by the action
resolved-toolsResolved mise tools as a newline-separated list
workspaceResolved BoringCache workspace
cache-tagResolved cache tag or prefix
runtime-cache-tagResolved mise runtime cache tag
resolved-entriesResolved archive cache entries after deterministic tool scoping
resolved-tagsResolved exact cache tags used by boringcache/one for verification and follow-up checks
proxy-portResolved proxy port for proxy-backed modes
proxy-log-pathProxy log file path for proxy-backed modes
cache-refResolved managed Docker or BuildKit cache ref.
cache-fromResolved Docker --cache-from or BuildKit --import-cache values for Docker or BuildKit modes, newline-separated when the CLI plan includes multiple import refs. PR-scoped refs may be absent on restore-only PR runs.
cache-toResolved Docker --cache-to or BuildKit --export-cache value for Docker or BuildKit modes
docker-cache-run-refProvider-neutral immutable Docker or BuildKit cache run ref tag when CI run-ref derivation is active
docker-cache-from-refsNewline-separated managed Docker or BuildKit cache ref tags that were actually readable and used for restore
docker-cache-requested-from-refsNewline-separated managed Docker or BuildKit cache ref tags requested from the CLI plan before readability filtering
docker-cache-unreadable-from-refsNewline-separated managed Docker or BuildKit cache ref tags that were requested but not readable
docker-cache-import-readyWhether every requested managed Docker or BuildKit cache ref was readable before the build began
docker-cache-promotion-refsNewline-separated managed Docker or BuildKit cache alias ref tags requested for promotion
docker-ci-providerProvider-neutral CI provider name used for Docker or BuildKit cache run-ref derivation
docker-ci-run-idProvider-neutral CI run id used for Docker or BuildKit cache run-ref derivation
docker-ci-run-attemptProvider-neutral CI run attempt used for Docker or BuildKit cache run-ref derivation
docker-ci-ref-typeProvider-neutral CI ref type used for Docker or BuildKit cache run-ref derivation
docker-ci-ref-nameProvider-neutral CI ref name used for Docker or BuildKit cache run-ref derivation
docker-ci-run-started-atProvider-neutral CI run start timestamp used for Docker or BuildKit alias promotion ordering when available
cache-dirResolved local cache import directory for Docker or BuildKit local backend
save-cache-dirResolved local cache export directory for Docker or BuildKit local backend
image-idBuilt Docker image ID when available
digestBuilt image digest when available
buildx-nameDocker buildx builder name
buildx-platformsAvailable platforms for the Docker buildx builder
rust-versionResolved Rust version
cargo-tagResolved cargo registry cache tag
cargo-git-tagResolved cargo git cache tag
target-tagResolved Rust target cache tag
cargo-bin-tagResolved cargo bin cache tag
sccache-tagResolved sccache cache tag
sccache-hitWhether the sccache cache was restored
package-managerDetected Node.js package manager for Turbo mode
package-manager-cache-dirResolved package-manager cache directory exported by Turbo mode
maven-extensions-pathResolved Maven extensions.xml path
maven-build-cache-config-pathResolved Maven build-cache config path
maven-local-repoResolved Maven local repository path