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 插件
18KB
320 行
Cargo Remote
请谨慎使用,我没有很好地测试这款软件,它确实有些“手工艺品”(至少目前是这样)。如果你想要测试它,请创建一个虚拟机或者在构建主机上至少创建一个单独的用户
我为什么构建它
在我笔记本电脑上处理 Rust 项目时,最大的烦恼是编译时间。由于我在一些项目中使用 Rust nightly,我不得不经常重新编译。目前似乎没有好的 Rust 远程构建集成,所以我决定自己构建一个。
计划的功能
这个初始版本非常简单(本来可以是一个 bash 脚本),但我打算将其增强到可以检测本地和远程版本兼容性、允许(几乎)所有 cargo 命令,甚至可能跨多台机器加载分发。
用法
目前只支持 cargo remote [FLAGS] [OPTIONS] <command>
:它将当前项目复制到远程服务器上的临时目录(~/remote-builds/<project_name>
),在远程服务器上调用 cargo <command>
,并可选择(-
)复制回结果目标文件夹。这假设服务器和客户端运行相同的 Rust 版本,并且具有相同的处理器架构。在客户端需要安装 ssh
和 rsync
。
如果你要传递远程标志,你必须使用 --
结束选项/标志部分。例如,为了以发布模式构建并复制结果,请使用
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