本页面文档记录了 bat 的构建系统、持续集成/持续部署 (CI/CD) 管道和发布流程。它涵盖了 Rust 构建配置、自动化测试基础设施、多平台编译、资源管理和包分发。
有关语法定义和主题的资源管理管道信息,请参阅 资源管理与构建管道。有关测试基础设施的详细信息,请参阅 测试基础设施。
项目采用标准的 Rust 包结构,并包含一些关键的配置元素。
来源: Cargo.toml1-14
该 crate 定义了多个特性标志来支持不同的用例。
application - 完整的应用程序功能(默认)minimal-application - 精简版应用程序构建git - 通过 git2 支持 Git 集成paging - 输出分页支持lessopen - LESSOPEN 预处理器支持build-assets - 资源构建能力regex-onig / regex-fancy - 不同的正则表达式引擎选项来源: Cargo.toml16-42
构建过程需要几个依赖项来生成补全和文档。
clap - 命令行补全生成anyhow - 构建脚本中的错误处理serde / toml - 配置解析walkdir - 用于资源发现的文件系统遍历来源: .github/workflows/CICD.yml16-32 .github/workflows/CICD.yml159-179
来源: .github/workflows/CICD.yml34-118 tests/scripts/license-checks.sh1-25
构建系统支持多种架构和操作系统。
| 目标 | 操作系统 | 架构 | 工具链 | 交叉编译 |
|---|---|---|---|---|
aarch64-unknown-linux-musl | Ubuntu | ARM64 | musl | 是 |
aarch64-unknown-linux-gnu | Ubuntu | ARM64 | GNU | 是 |
arm-unknown-linux-gnueabihf | Ubuntu | ARM | GNU | 是 |
x86_64-unknown-linux-gnu | Ubuntu | x86_64 | GNU | 是 |
x86_64-unknown-linux-musl | Ubuntu | x86_64 | musl | 是 |
i686-unknown-linux-gnu | Ubuntu | i686 | GNU | 是 |
x86_64-apple-darwin | macOS-13 | x86_64 | 原生 | 否 |
aarch64-apple-darwin | macOS-14 | ARM64 | 原生 | 否 |
x86_64-pc-windows-msvc | Windows-2019 | x86_64 | MSVC | 否 |
i686-pc-windows-msvc | Windows-2019 | i686 | MSVC | 否 |
来源: .github/workflows/CICD.yml166-178
来源: .github/workflows/CICD.yml185-286
来源: .github/workflows/CICD.yml288-326 .github/workflows/CICD.yml328-404
构建过程会生成几种类型的资源:
Shell 补全:生成在 target/*/release/build/bat-*/out/assets/completions/
bat.bash - Bash 补全bat.fish - Fish shell 补全_bat.ps1 - PowerShell 补全bat.zsh - Zsh 补全文档:生成在 target/*/release/build/bat-*/out/assets/manual/
bat.1 - Unix man page二进制资源:语法定义和主题被编译成二进制格式。
来源: .github/workflows/CICD.yml311-315 .github/workflows/CICD.yml349-356
来源: .github/workflows/CICD.yml100-118
CI/CD 管道包含系统范围的配置测试,以确保在各种部署场景下的正确行为。
来源: .github/workflows/CICD.yml120-134
来源: .github/workflows/CICD.yml136-149
管道包含使用 cargo-audit 进行的自动化安全审计。
这会检查依赖项中已知的安全漏洞。
来源: .github/workflows/CICD.yml151-157
许可检查系统可防止包含 GPL 许可的代码。
并有选择性地排除引用 GPL 但本身并非 GPL 许可的文件。
来源: tests/scripts/license-checks.sh5-24
CI/CD 系统会自动从 Cargo.toml 中提取版本信息。
该版本用于:
来源: .github/workflows/CICD.yml42-43
管道通过在该特定版本上运行测试和 clippy 来强制执行最低 Rust 版本(1.74)。