/build 目录是 Go 项目布局中的一个标准组件,用于打包和持续集成(CI)配置。此目录包含从 Go 代码创建可部署的工件以及设置自动化构建和测试流程所需的所有文件和脚本。
有关构建脚本和其他构建相关实用程序的信息,请参阅脚本目录 脚本目录。有关部署配置的信息,请参阅初始化和部署目录 初始化和部署目录。
/build 目录有两个主要的子目录,每个子目录在构建和打包过程中都有其独特的用途
来源:README.md132-138 build/README.md1-7
/build/package 目录包含用于创建可部署工件的配置和脚本,例如
.deb).rpm).pkg)此目录涉及如何为各种部署环境打包 Go 应用程序,使其适用于不同的基础设施目标。
来源:README.md136 build/README.md5
/build/ci 目录包含持续集成平台的配置文件,包括
.travis.yml).circleci/config.yml).drone.yml)Jenkinsfile)这些文件定义了在自动化构建管道中如何构建、测试和验证应用程序。CI 工具可能对配置文件位置有特定要求,因此此目录通常包含可能也存在于根目录的文件链接或副本。
来源:README.md138 build/README.md7-8
下图说明了 /build 目录如何融入 Go 项目的典型 CI/CD 工作流程
来源:README.md132-138 README.md1-9
/build 目录与标准 Go 项目布局中的其他几个目录密切相关
| 目录 | 与 /build 的关系 |
|---|---|
/scripts | 包含可能在 CI 过程中或在 /build 的配置中调用的构建脚本 |
/cmd | 包含使用 /build 中的配置进行编译和打包的应用程序入口点 |
/internal | 包含使用 /build 中的配置进行编译和打包的私有代码 |
/pkg | 包含使用 /build 中的配置进行编译和打包的共享库 |
/deployments | 包含使用 /build 中定义的流程产生的工件的部署配置 |
来源:README.md132-138 Mermaid diagrams from prompt (diagram 5 "Build and Deployment Infrastructure")
在使用 /build/ci 目录中的 CI 配置时
/build/ci 中,并链接或复制到所需位置/scripts 目录中的脚本,而不是复制构建逻辑来源:README.md138 build/README.md7-8
对于 /build/package 目录中的包配置
来源:README.md136 build/README.md5
CockroachDB 项目提供了一个关于如何组织 /build 目录的优秀实际示例
/build 目录作为与打包和持续集成相关的所有配置文件和脚本的集中位置。通过将这些配置与应用程序代码分开,同时保持标准结构,Go 项目可以确保在不同环境和平台上实现一致且可重复的构建和打包流程。