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

构建 cargo-green

通过将 rustc 调用转发到 BuildKit 构建器来实现缓存和远程执行 cargo 构建。

6 个版本 (破坏性更新)

新版本 0.8.0 2024年8月19日
0.6.0 2024年8月17日
0.5.0 2024年8月16日
0.4.0 2024年6月23日
0.2.0 2024年5月11日

#17 in 缓存

Download history 180/week @ 2024-05-09 9/week @ 2024-05-16 4/week @ 2024-05-23 114/week @ 2024-06-06 28/week @ 2024-06-13 162/week @ 2024-06-20 10/week @ 2024-06-27 3/week @ 2024-07-04 381/week @ 2024-08-15

每月下载量 381

MIT 许可证

145KB
2.5K SLoC

cargo-green

通过将 rustc 调用转发到 BuildKit 构建器来缓存和准备远程就绪的 Rust 项目构建器。

cargo-green

  • 一个 cargo 插件,它设置 $RUSTC_WRAPPER 然后调用 cargo
  • 一个构建 Dockerfile 的 RUSTC_WRAPPER 工具

配置

读取环境变量

  • $BUILDX_BUILDER

  • $CARGOGREEN_LOG:设置 $RUSTCBUILDX_LOG 级别

  • $CARGOGREEN_REMOTE:目前保留

  • $DOCKER_HOST

  • $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
cargo green add
cargo green bench
cargo green build
cargo green check
cargo green clean
cargo green clippy
cargo green doc
cargo green init
cargo green install
cargo green new
cargo green package
cargo green publish
cargo green remove
cargo green run
cargo green search
cargo green test
cargo green uninstall
cargo green update

# or, setting an alias in e.g. ~/.bashrc
alias cargo='cargo green'

# With this, one may also use this set of subcommands: [UNSTABLE API] (refacto into a `cache` cmd)
cargo supergreen config get   VAR*
cargo supergreen config set   VAR VAL
cargo supergreen config unset VAR
cargo supergreen pull-images             Pulls latest versions of images used for the build, no cache (respects $DOCKER_HOST)
cargo supergreen pull-cache              Pulls all from `--cache-from`
cargo supergreen push-cache              Pushes all to `--cache-to`

调整设置

[email protected]: Cargo plugin and $RUSTC_WRAPPER to sandbox & cache cargo builds and execute jobs remotely
    https://github.com/fenollp/supergreen

Usage:
  cargo green supergreen env             Show used values
  cargo green supergreen pull            Pulls images (respects $DOCKER_HOST)
  cargo green supergreen push            Push cache image (all tags)
  cargo green supergreen -h | --help
  cargo green supergreen -V | --version

远程执行

假设你在~/.ssh/config中有一个名为extra_oomph的大机器

export DOCKER_HOST=ssh://extra_oomph
cargo green test ...

安装

# Installs to ~/.cargo/bin
cargo install --locked --force --git https://github.com/fenollp/supergreen.git cargo-green

# Make sur $CARGO_HOME/bin is in your $PATH
which cargo-green

En vrac

依赖关系

~8–20MB
~285K SLoC