菜单

构建系统和 CI/CD

相关源文件

本页面文档记录了 bat 的构建系统、持续集成/持续部署 (CI/CD) 管道和发布流程。它涵盖了 Rust 构建配置、自动化测试基础设施、多平台编译、资源管理和包分发。

有关语法定义和主题的资源管理管道信息,请参阅 资源管理与构建管道。有关测试基础设施的详细信息,请参阅 测试基础设施

构建配置

Cargo 包结构

项目采用标准的 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 - 用于资源发现的文件系统遍历

来源: Cargo.toml106-126

CI/CD 管道架构

来源: .github/workflows/CICD.yml16-32 .github/workflows/CICD.yml159-179

作业依赖与执行流程

来源: .github/workflows/CICD.yml34-118 tests/scripts/license-checks.sh1-25

多平台构建矩阵

目标平台配置

构建系统支持多种架构和操作系统。

目标操作系统架构工具链交叉编译
aarch64-unknown-linux-muslUbuntuARM64musl
aarch64-unknown-linux-gnuUbuntuARM64GNU
arm-unknown-linux-gnueabihfUbuntuARMGNU
x86_64-unknown-linux-gnuUbuntux86_64GNU
x86_64-unknown-linux-muslUbuntux86_64musl
i686-unknown-linux-gnuUbuntui686GNU
x86_64-apple-darwinmacOS-13x86_64原生
aarch64-apple-darwinmacOS-14ARM64原生
x86_64-pc-windows-msvcWindows-2019x86_64MSVC
i686-pc-windows-msvcWindows-2019i686MSVC

来源: .github/workflows/CICD.yml166-178

构建流程

来源: .github/workflows/CICD.yml185-286

包生成与分发

制品创建管道

来源: .github/workflows/CICD.yml288-326 .github/workflows/CICD.yml328-404

生成的资源与补全

构建过程会生成几种类型的资源:

  1. Shell 补全:生成在 target/*/release/build/bat-*/out/assets/completions/

    • bat.bash - Bash 补全
    • bat.fish - Fish shell 补全
    • _bat.ps1 - PowerShell 补全
    • bat.zsh - Zsh 补全
  2. 文档:生成在 target/*/release/build/bat-*/out/assets/manual/

    • bat.1 - Unix man page
  3. 二进制资源:语法定义和主题被编译成二进制格式。

来源: .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 中提取版本信息。

该版本用于:

  • 包命名
  • Debian 包版本管理
  • 发布制品命名

来源: .github/workflows/CICD.yml42-43

MSRV(最低支持的 Rust 版本)强制执行

管道通过在该特定版本上运行测试和 clippy 来强制执行最低 Rust 版本(1.74)。

来源: .github/workflows/CICD.yml64-80 Cargo.toml14