#docker-build #cargo-build #build #docker #buildkit #rustc-wrapper #docker-host

构建 rustcbuildx

$RUSTC_WRAPPER 工具,用于沙盒化 cargo 构建,并远程执行任务

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构建工具

MIT 许可证

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

使用方法

  • 确保至少安装了 dockerpodman 客户端
  • 已知在 Ubuntu 22.04 上与 github.com/docker/buildx v0.11.2 9872040rust 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

依赖项

~8–20MB
~281K SLoC