#部署 #发布 #目录

nightly bin+lib 发布管理器

管理Rust程序的实用工具

5 个版本

使用旧Rust 2015

0.1.4 2017年12月16日
0.1.3 2017年12月13日
0.1.2 2017年12月7日
0.1.1 2017年12月6日
0.1.0 2017年12月6日

#675 in 配置

GPL-3.0 许可证

43KB
852

发布管理器

管理带有交叉编译二进制的crate的工具。

为了交叉编译Rust,你需要确保已经通过rustup添加了目标,并且有一个本地工具链来处理编译C依赖项和链接二进制文件。设置这些工具超出了本项目的范围。有关交叉编译Rust项目的信息,请参阅rust-cross

发布管理器目前支持以下目标

  • x86_64-pc-windows-gnu 配置为 [config.Windows.amd64]
  • i686-pc-windows-gnu 配置为 [config.Windows.i686]
  • x86_64-apple-darwin 配置为 [config.Apple.amd64]
  • x86_64-unknown-linux-gnu 配置为 [config.Linux.amd64]
  • x86_64-unknown-linux-musl 配置为 [config.Linux.amd64musl]
  • arm-unknown-linux-gnueabihf 配置为 [config.Linux.armh]
  • arm-unknown-linux-musleabihf 配置为 [config.Linux.armhmusl]
  • armv7-unknown-linux-gnueabihf 配置为 [config.Linux.armv7h]
  • armv7-unknown-linux-musleabihf 配置为 [config.Linux.armv7hmusl]
  • aarch64-unknown-linux-gnu 已配置为 [config.Linux.aarch64]

设置好交叉编译目标后,创建一个 Release.toml 文件。默认情况下,release-manager 预期 release toml 文件位于您的 crate 目录中。如果您希望将此文件保存在其他位置,可以使用带有路径的配置传递 -r 选项给 release-manager。

release_path = "/home/asonix/Development/rust/releases"
included_files = ["LICENSE", "README.md", "ACKNOWLEDGEMENTS"]

[[config.Linux.aarch64]]
libs = ["/usr/aarch64-linux-gnu/lib", "/home/asonix/Development/aarch64/lib"]

[config.Linux.aarch64.env]
OPENSSL_DIR = "/home/asonix/Development/aarch64"
PKG_CONFIG_ALLOW_CROSS = "1"

[[config.Linux.armv7h]]
libs = ["/usr/arm-linux-gnueabihf/lib", "/home/asonix/Development/armeabi/lib"]

[config.Linux.armv7h.env]
OPENSSL_DIR = "/home/asonix/Development/armeabi"
PKG_CONFIG_ALLOW_CROSS = "1"

[[config.Linux.armh]]
libs = ["/usr/arm-linux-gnueabihf/lib", "/home/asonix/Development/armeabi/lib"]

[config.Linux.armh.env]
OPENSSL_DIR = "/home/asonix/Development/armeabi"
PKG_CONFIG_ALLOW_CROSS = "1"

[[config.Linux.amd64]]
libs = []
env = {}

[[config.Linux.amd64musl]]
libs = ["/usr/lib/musl/lib", "/home/asonix/Development/amd64-musl/lib"]

[config.Linux.amd64musl.env]
OPENSSL_DIR = "/home/asonix/Development/amd64-musl"
PKG_CONFIG_ALLOW_CROSS = "1"
LIBZ_SYS_STATIC = "1"

[[config.Linux.armv7hmusl]]
libs = ["/usr/lib/arm-linux-gnueabihf/lib", "/home/asonix/Development/armh-musl/lib"]

[config.Linux.armv7hmusl.env]
OPENSSL_DIR = "/home/asonix/Development/armh-musl"
PKG_CONFIG_ALLOW_CROSS = "1"
LIBZ_SYS_STATIC = "1"

[[config.Linux.armhmusl]]
libs = ["/usr/lib/arm-linux-gnueabihf/lib", "/home/asonix/Development/armh-musl/lib"]

[config.Linux.armhmusl.env]
OPENSSL_DIR = "/home/asonix/Development/armh-musl"
PKG_CONFIG_ALLOW_CROSS = "1"
LIBZ_SYS_STATIC = "1"

[[config.Windows.amd64]]
libs = ["/usr/x86_64-w64-mingw32/lib"]
env = { PKG_CONFIG_ALLOW_CROSS = "1" }

帮助菜单

$ release-manager
release-manager 0.1.4
Riley Trautman <[email protected]>
A utility for creating release binaries for multiple platforms

USAGE:
    release-manager [FLAGS] [OPTIONS]

FLAGS:
    -f, --force                Force recompiling of succeeded builds
    -h, --help                 Prints help information
    -p, --publish              Publish to crates.io on succesfull build
        --skip-dependencies    Don't compile dependencies unless needed
    -V, --version              Prints version information
        --verbose              Print debug info

OPTIONS:
    -r, --release-config <release_config>    Provide an alternative path for the release config
    -s, --status-file <status_file>          Provide an alternative path for the status file

运行 release-manager 时,它将在您的项目目录中创建一个 Status.toml 文件。如果您希望将其放在其他位置,可以将 -s 选项传递给 release-manager。状态文件用于跟踪哪些构建对哪个 crate 版本成功,以及该 crate 是否已为此版本发布。

输出目录结构

releases/release-manager/0.1.1 
[I] ➜  tree
.
├── aarch64-unknown-linux-gnu
│   ├── LICENSE
│   ├── README.md
│   └── release-manager
├── aarch64-unknown-linux-gnu.zip
├── arm-unknown-linux-gnueabihf
│   ├── LICENSE
│   ├── README.md
│   └── release-manager
├── arm-unknown-linux-gnueabihf.zip
├── armv7-unknown-linux-gnueabihf
│   ├── LICENSE
│   ├── README.md
│   └── release-manager
├── armv7-unknown-linux-gnueabihf.zip
├── x86_64-pc-windows-gnu
│   ├── LICENSE
│   ├── README.md
│   └── release-manager.exe
├── x86_64-pc-windows-gnu.zip
├── x86_64-unknown-linux-gnu
│   ├── LICENSE
│   ├── README.md
│   └── release-manager
└── x86_64-unknown-linux-gnu.zip

5 directories, 20 files

许可证

Release Manager 是自由软件:您可以在自由软件基金会发布的 GNU 通用公共许可证条款下重新分发和/或修改它,许可证版本为 3 或(根据您的选择)任何后续版本。

Release Manager 的分发是希望它将是有用的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示性保证。有关更多详细信息,请参阅 GNU 通用公共许可证。此文件是 Release Manager 的一部分。

您应该已收到与 Release Manager 一起提供的 GNU 通用公共许可证副本。如果没有,请参阅 http://www.gnu.org/licenses/

依赖项

~7–16MB
~195K SLoC