5 releases (breaking)
0.5.0 | Aug 16, 2024 |
---|---|
0.4.0 | Jun 23, 2024 |
0.3.0 | Jun 11, 2024 |
0.2.0 | May 12, 2024 |
0.1.0 | Dec 3, 2023 |
#21 in Caching
360 downloads per month
135KB
2.5K
SLoC
rustcbuildx
Forwards rustc
calls to BuildKit builders.
rustcbuildx
is a RUSTC_WRAPPER
for cached and remote building of Rust projects (on BuildKit).
Configuration
Reads envs
$RUSTCBUILDX
$RUSTCBUILDX_BASE_IMAGE
$RUSTCBUILDX_BUILDER_IMAGE
$RUSTCBUILDX_CACHE_IMAGE
$RUSTCBUILDX_INCREMENTAL
$RUSTCBUILDX_LOG
$RUSTCBUILDX_LOG_PATH
$RUSTCBUILDX_LOG_STYLE
$RUSTCBUILDX_RUNNER
$RUSTCBUILDX_RUNS_ON_NETWORK
$RUSTCBUILDX_SYNTAX
Usage
- Ensure at least either a
docker
orpodman
client is installed - Known to work on
Ubuntu 22.04
withgithub.com/docker/buildx v0.11.2 9872040
andrust 1.73
# Keep images in sync with your local tools
rustcbuildx pull
export RUSTC_WRAPPER=rustcbuildx
cargo build ...
cargo check ...
cargo clippy ...
cargo install ...
cargo test ...
# or
RUSTC_WRAPPER=rustcbuildx cargo build ...
RUSTC_WRAPPER=rustcbuildx cargo check ...
RUSTC_WRAPPER=rustcbuildx cargo clippy ...
RUSTC_WRAPPER=rustcbuildx cargo install ...
RUSTC_WRAPPER=rustcbuildx cargo test ...
Fine tuning settings
rustcbuildx@version: $RUSTC_WRAPPER tool to sandbox cargo builds and execute jobs remotely
https://github.com/fenollp/supergreen
Usage:
rustcbuildx env Show used values
rustcbuildx pull Pulls images (respects $DOCKER_HOST)
rustcbuildx -h | --help
rustcbuildx -V | --version
Remote execution
Say you have a bigger machine in your ~/.ssh/config
called extra_oomph
:
export DOCKER_HOST=ssh://extra_oomph
# Then
export RUSTC_WRAPPER=rustcbuildx
cargo test ...
Installation
# Installs to ~/.cargo/bin
cargo install --locked --force --git https://github.com/fenollp/supergreen.git rustcbuildx
# Make sur $CARGO_HOME/bin is in your $PATH
which rustcbuildx
En vrac
-
Proposal: c8d: expose contentstore API #44369 https://github.com/moby/moby/issues/44369
-
Incremental export transfer #1224 https://github.com/moby/buildkit/issues/1224
-
"sending tarball" takes a long time even when the image already exists #107 https://github.com/docker/buildx/issues/107
-
mount=type=cache more in-depth explanation? #1673 https://github.com/moby/buildkit/issues/1673
-
Build drivers https://docs.docker.com/build/drivers/
-
Race condition when using cache-mounts with multi-arch builds. #549 https://github.com/docker/buildx/issues/549
-
https://docs.docker.com/build/ci/github-actions/configure-builder/#max-parallelism
-
https://docs.docker.com/engine/reference/builder/#buildkit-built-in-build-args
-
tunnel tty into a docker build through http
-
docker build
remote
driver https://docs.docker.com/build/drivers/remote -
rootless
k8s
driver https://docs.docker.com/build/drivers/kubernetes/#rootless-mode -
tune many options https://docs.docker.com/build/drivers/docker-container/
-
https://docs.docker.com/build/attestations/sbom/
- https://github.com/moby/buildkit/blob/647a997b389757068760410053873745acabfc80/docs/attestations/sbom.md?plain=1#L48
BUILDKIT_SBOM_SCAN_CONTEXT and BUILDKIT_SBOM_SCAN_STAGE
-
prune
: filtering outADD --checksum=... https://...
entries #2448 -
-o=.
:open $HOME/.local/share/docker/overlay2/066f6../work/work: permission denied
#2219 -
cargo restrict targets of crate
-
Target configuration for binaries #9208 https://github.com/rust-lang/cargo/issues/9208
-
Unsafe fields #3458 https://github.com/rust-lang/rfcs/pull/3458
-
Warning when large binary files are included into the bundle #9058 https://github.com/rust-lang/cargo/issues/9058
-
Hermetic build mode #9506 https://github.com/rust-lang/cargo/issues/9506
-
Consider making the src cache read-only. #9455 https://github.com/rust-lang/cargo/issues/9455
-
Feature Request static asserts #2790 https://github.com/rust-lang/rfcs/issues/2790
-
greater supply chain attack risk due to large dependency trees? https://www.reddit.com/r/rust/comments/102yz60/greater_supply_chain_attack_risk_due_to_large/
-
https://doc.rust-lang.org/rustc/command-line-arguments.html#option-emit
-
[build] rustflags = ["--remap-path-prefix"
-
/r/Rust scare Serde has started shipping precompiled binaries with no way to opt out
-
Build function: ResourceExhausted: grpc: received message larger than max (_ vs. 4194304)
Dependencies
~9–20MB
~266K SLoC