#package #distribution #cargo-subcommand #applications #binary #archive #manifest

app cargo-sls-distribution

一个 Cargo 子命令,可以将二进制crate打包成分发存档

9个不稳定版本 (3个破坏性更新)

使用旧的 Rust 2015

0.4.5 2017年8月25日
0.4.4 2017年6月12日
0.4.3 2017年5月1日
0.4.2 2017年4月30日
0.1.0 2017年1月4日

#729Cargo 插件

每月32次下载

Apache-2.0

27KB
658

cargo-sls-distribution

CircleCI

一个 Cargo 子命令,可以将二进制crate打包成符合SLS 规范的格式,以便于分发和执行。包布局旨在将不可变文件与可变状态和配置分离。

crate将包含一个简单的守护进程脚本、描述包内容的清单以及其他用户定义的内容

[service-name]-[service-version]/
    deployment/
        manifest.yml                      # simple package manifest
    service/
        bin/
            [service-name]                # crate executable
            init.sh                       # daemonizing script
        monitoring/
            bin/
                check.sh                  # monitoring script
    var/                                  # application configuration and data

包将以名为 [service-name]-[service-version].sls.tgz 的压缩tar包形式生成。

使用方法

通过 Cargo 安装并作为子命令运行

$ cargo install cargo-sls-distribution
    ...
$ cargo sls-distribution

创建的包的路径将被打印到标准输出。

配置

配置在 Cargo.toml 的 package.metadata.sls-distribution 部分指定。

[package.metadata.sls-distribution]
# A Maven-style group name for the distribution.
# Required.
product-group = "com.foobar"

# A list of command line arguments to supply to the crate when running it.
# Defaults to an empty list.
args = ["server", "var/conf/server.yml"]

# A list of command line arguments to supply to the crate when checking its status.
# If not provided, no monitoring script will be generated.
check-args = ["check", "var/conf/server.yml"]

# If set, the service version will be derived from `git describe` rather than the Cargo package version.
# Defaults to false.
git-version = true

# A map of extended manifest attributes.
# Defaults to an empty map.
manifest-extensions = { key = "value" }

# An array of information about services that this depends on.
[[package.metadata.sls-distribution.product-dependencies]]
product-group = "com.foobar"
product-name = "my-service"
minimum-version = "1.1.0"

如果存在,将添加 deploymentservicevar 目录的内容到存档中,尽管这可以通过与 cargo package 相同的方式控制,通过标准 package.includepackage.exclude 字段以及 .gitignore 文件

[package]
exclude = ["var/data/*"]

依赖项

~17–28MB
~533K SLoC