5 个版本 (破坏性更新)
新 0.5.0 | 2024 年 8 月 16 日 |
---|---|
0.4.0 | 2024 年 6 月 23 日 |
0.3.0 | 2024 年 6 月 11 日 |
0.2.0 | 2024 年 5 月 12 日 |
0.1.0 | 2023 年 12 月 3 日 |
#26 在 构建工具
135KB
2.5K SLoC
rustcbuildx
将 rustc
调用转发到 BuildKit 构建器。
rustcbuildx
是一个用于缓存和远程构建 Rust 项目的 RUSTC_WRAPPER
(在 BuildKit 上)。
配置
读取环境变量
$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
使用方法
- 确保至少安装了
docker
或podman
客户端 - 已知在
Ubuntu 22.04
上与github.com/docker/buildx v0.11.2 9872040
和rust 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 ...
微调设置
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
远程执行
假设你在 ~/.ssh/config
中有一个名为 extra_oomph
的更大机器
export DOCKER_HOST=ssh://extra_oomph
# Then
export RUSTC_WRAPPER=rustcbuildx
cargo test ...
安装
# 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
-
建议:c8d: 暴露 contentstore API #44369 https://github.com/moby/moby/issues/44369
-
增量导出传输 #1224 https://github.com/moby/buildkit/issues/1224
-
"发送 tar 包" 即使镜像已存在,也需要很长时间 #107 https://github.com/docker/buildx/issues/107
-
mount=type=cache 更深入的说明? #1673 https://github.com/moby/buildkit/issues/1673
-
使用缓存挂载进行多架构构建时的竞争条件。 #549 https://github.com/docker/buildx/issues/549
-
https://docs.docker.net.cn/build/ci/github-actions/configure-builder/#max-parallelism
-
https://docs.docker.net.cn/engine/reference/builder/#buildkit-built-in-build-args
-
通过 http 将隧道 tty 传送到 docker 构建
-
docker build
remote
驱动 https://docs.docker.net.cn/build/drivers/remote -
无根
k8s
驱动 https://docs.docker.net.cn/build/drivers/kubernetes/#rootless-mode -
调整许多选项 https://docs.docker.net.cn/build/drivers/docker-container/
-
https://docs.docker.net.cn/build/attestations/sbom/
- https://github.com/moby/buildkit/blob/647a997b389757068760410053873745acabfc80/docs/attestations/sbom.md?plain=1#L48
BUILDKIT_SBOM_SCAN_CONTEXT和BUILDKIT_SBOM_SCAN_STAGE
-
-o=.
:open $HOME/.local/share/docker/overlay2/066f6../work/work: permission denied
#2219 -
cargo限制 crate 的目标
-
二进制文件的配置目标 #9208 https://github.com/rust-lang/cargo/issues/9208
-
不安全字段 #3458 https://github.com/rust-lang/rfcs/pull/3458
-
当大二进制文件被包含到包中时发出警告 #9058 https://github.com/rust-lang/cargo/issues/9058
-
不可变构建模式 #9506 https://github.com/rust-lang/cargo/issues/9506
-
考虑使 src 缓存只读。 #9455 https://github.com/rust-lang/cargo/issues/9455
-
功能请求静态断言 #2790 https://github.com/rust-lang/rfcs/issues/2790
-
由于大型依赖树,供应链攻击风险更大? https://www.reddit.com/r/rust/comments/102yz60/greater_supply_chain_attack_risk_due_to_large/
-
https://doc.rust-lang.net.cn/rustc/command-line-arguments.html#option-emit
-
[构建]rustflags = ["--remap-path-prefix"
-
/r/Rust 恐慌 Serde已开始提供预编译的二进制文件,且无法选择退出
依赖项
~8–20MB
~281K SLoC