#remote #build #cargo-subcommand #projects #remotely #flags #compile

app cargo-remote

Cargo 子命令,用于远程构建 Rust 项目

4 个版本

0.2.0 2021年4月24日
0.1.2 2018年5月27日
0.1.1 2018年1月11日
0.1.0 2018年1月10日

#642 in Cargo 插件

MIT 许可证

18KB
320

Cargo Remote

请谨慎使用,我没有很好地测试这款软件,它确实有些“手工艺品”(至少目前是这样)。如果你想要测试它,请创建一个虚拟机或者在构建主机上至少创建一个单独的用户

我为什么构建它

在我笔记本电脑上处理 Rust 项目时,最大的烦恼是编译时间。由于我在一些项目中使用 Rust nightly,我不得不经常重新编译。目前似乎没有好的 Rust 远程构建集成,所以我决定自己构建一个。

计划的功能

这个初始版本非常简单(本来可以是一个 bash 脚本),但我打算将其增强到可以检测本地和远程版本兼容性、允许(几乎)所有 cargo 命令,甚至可能跨多台机器加载分发。

用法

目前只支持 cargo remote [FLAGS] [OPTIONS] <command>:它将当前项目复制到远程服务器上的临时目录(~/remote-builds/<project_name>),在远程服务器上调用 cargo <command>,并可选择(-)复制回结果目标文件夹。这假设服务器和客户端运行相同的 Rust 版本,并且具有相同的处理器架构。在客户端需要安装 sshrsync

如果你要传递远程标志,你必须使用 -- 结束选项/标志部分。例如,为了以发布模式构建并复制结果,请使用

cargo remote -c -- build --release

配置

您可以将名为 .cargo-remote.toml 的配置文件放在与您的 Cargo.toml 相同的目录中,或者放在 ~/.config/cargo-remote/cargo-remote.toml。在那里,您可以定义默认的远程构建主机和用户。这可以通过 -r 标志来覆盖。

示例配置文件

[[remote]]
name = "myRemote" # Not needed for a single remote
host = "myUser@myServer" # Could also be a ssh config entry
ssh_port = 42 # defaults to 22
temp_dir = "~/rust" # Default is "~/remote-builds"
env = "~/.profile" # Default is "/etc/profile"

标志和选项

USAGE:
    cargo remote [FLAGS] [OPTIONS] <command> [remote options]...

FLAGS:
        --help               Prints help information
    -h, --transfer-hidden    Transfer hidden files and directories to the build server
        --no-copy-lock       don't transfer the Cargo.lock file back to the local machine
    -V, --version            Prints version information

OPTIONS:
    -b, --build-env <build_env>              Set remote environment variables. RUST_BACKTRACE, CC, LIB, etc.  [default:
                                             RUST_BACKTRACE=1]
    -c, --copy-back <copy_back>              Transfer the target folder or specific file from that folder back to the
                                             local machine
    -e, --env <env>                          Environment profile. default_value = /etc/profile
    -H, --remote-host <host>                 Remote ssh build server with user or the name of the ssh entry
        --manifest-path <manifest_path>      Path to the manifest to execute [default: Cargo.toml]
    -r, --remote <name>                      The name of the remote specified in the config
    -d, --rustup-default <rustup_default>    Rustup default (stable|beta|nightly) [default: stable]
    -p, --remote-ssh-port <ssh_port>         The ssh port to communicate with the build server
    -t, --remote-temp-dir <temp_dir>         The directory where cargo builds the project

ARGS:
    <command>              cargo command that will be executed remotely
    <remote options>...    cargo options and flags that will be applied remotely

如何安装

git clone https://github.com/sgeisler/cargo-remote
cargo install --path cargo-remote/

MacOS问题

据报道,MacOS中提供的 rsync 版本不支持进度标志,因此在 cargo-remote 尝试使用它时失败。您可以通过运行以下命令安装新版本:

brew install rsync

参见#10

依赖项

~6MB
~107K SLoC