9 个版本

使用旧的 Rust 2015

0.3.2 2018年10月28日
0.3.1 2018年10月13日
0.2.3 2018年10月1日
0.2.2 2018年9月27日
0.1.1 2018年9月22日

构建工具 中排名 506


3 crate 中使用

MIT/Apache 协议

31KB
469 行代码(不含注释)

从 DevOps 的角度来看,了解确切部署了什么至关重要。 oysterpack_built 被用作构建时依赖项,以收集应用程序构建相关元数据。信息从 cargo build 收集。它在项目的构建脚本输出目录中生成一个名为 built.rs 的 Rust 源文件。位置可以通过以下方式获取

let built_rs = concat!(env!("OUT_DIR"), "/built.rs");

如何在您的项目中集成

  1. 将以下内容添加到 Cargo.toml

    [package]
    build = "build.rs"
    
    [dependencies]
    oysterpack_app_metadata = "0.1"
    semver = "0.9"
    chrono = "0.4"
    
    [build-dependencies]
    oysterpack_built = "0.3"
    
    • oysterpack_built 被添加为构建依赖项
    • build.rs 是要使用的 cargo 构建脚本的名称
    • oysterpack_app_metadata 与此 crate 一起使用,以将应用程序构建元数据加载到由 oysterpack_app_metadata 定义的领域模型中
  2. build.rs 中包含以下内容

    extern crate oysterpack_built;
    
    fn main() {
       oysterpack_built::run();
    }
    
  3. 默认情况下,构建脚本将在 Cargo 的构建输出目录中写入一个名为 built.rs 的文件,该文件将包含以下常量

常量 类型 描述
BUILT_TIME_UTC &str 构建时间,采用 RFC822 格式,UTC 时间
CFG_ENDIAN &str 端序,由 cfg!(target_endian) 给出。
CFG_ENV &str 工具链环境,由 cfg!(target_env) 给出。
CFG_FAMILY &str 操作系统家族,由 cfg!(target_family) 给出。
CFG_OS &str 操作系统,由 cfg!(target_os) 给出。
CFG_POINTER_WIDTH u8 指针宽度,由 cfg!(target_pointer_width) 给出。
CFG_TARGET_ARCH &str 目标架构,由 cfg!(target_arch) 给出。
CI_PLATFORM Option<&str> 编译过程中检测到的持续集成平台。
DEBUG bool 编译期间使用的配置的 DEBUG 值。
FEATURES [&str; N] 编译期间启用的功能。
FEATURES_STR &str 以逗号分隔的功能字符串。
GIT_VERSION Option<&str> 如果crate是从git仓库内部编译的,GIT_VERSION将包含HEAD的标签。如果HEAD未标记,则使用简短的提交ID。
HOST &str rust编译器的宿主三元组。
NUM_JOBS u32 在编译期间指定的并行度。
OPT_LEVEL &str 编译期间使用的配置文件OPT_LEVEL的值。
PKG_AUTHORS &str 冒号分隔的作者列表。
PKG_DESCRIPTION &str 描述。
PKG_HOMEPAGE &str 主页。
PKG_NAME &str 包名。
PKG_VERSION &str 完整版本。
PKG_VERSION_MAJOR &str 主版本。
PKG_VERSION_MINOR &str 次版本。
PKG_VERSION_PATCH &str 补丁版本。
PKG_VERSION_PRE &str 预发布版本。
PROFILE &str 对于发布构建为release,对于其他构建为debug。
RUSTC &str cargo解析为使用的编译器。
RUSTC_VERSION &str rustc -V的输出。
RUSTDOC &str cargo解析为使用的文档生成器。
RUSTDOC_VERSION &str rustdoc -V的输出。
DEPENDENCIES_GRAPHVIZ_DOT &str 有效依赖图的graphviz .dot格式。

可以通过oysterpack_app_metadata op_build_mod!()加载应用程序元数据。

#[macro_use]
extern crate oysterpack_app_metadata;
extern crate chrono;
extern crate semver;

// loads the application metadata into `pub mod build {...}'
op_build_mod!()

use oysterpack_app_metadata::Build;

fn main () {
    let app_build = build::get();
    // integrate the application build metadata ...
}

依赖项

~28–40MB
~746K SLoC