项目发现 v2.1.3+
Catboy 能够通过目录的组织形式,自动发现不同的项目以及同一项目下的不同目标。
推荐目录层次
以下是 Catboy 推荐的目录层次结构:
code/
├─ project-a/ # 项目 project-a
│ ├─ repo-a/ # 代码仓库 repo-a
│ │ └─ build.yaml # Catboy 构建蓝图, 假设其中定义了属于项目 project-a
│ │ # 同时声明了目标 target-1, target-2
│ └─ repo-b/ # 代码仓库 repo-b
│ └─ build.yaml # Catboy 构建蓝图, 假设其中定义了属于项目 project-a
│ # 同时声明了目标 target-3
│
└─ project-b/ # 项目 project-b
├─ repo-c/ # 代码仓库 repo-c
│ └─ build.yaml # Catboy 构建蓝图, 假设其中定义了属于项目 project-b
│ # 同时声明了目标 target-4, target-5
└─ repo-d/ # 代码仓库 repo-d
└─ build.yaml # Catboy 构建蓝图, 假设其中定义了属于项目 project-b
# 同时声明了目标 target-6项目与目标
即便构建目标身处不同的代码仓库,只要声明归属于同一项目,Catboy 会认为构建目标为平级关系。 上图中的目录结构经过解析后,在 Catboy 的视角中层次如下:
项目 project-a
├─ 构建目标 target-1
├─ 构建目标 target-2
└─ 构建目标 target-3
项目 project-b
├─ 构建目标 target-4
├─ 构建目标 target-5
└─ 构建目标 target-6可见经过 Catboy 解析后,没有了仓库(存放代码的目录)这一的概念。这种解析被称为「Catboy 项目发现」机制。
项目发现
Catboy 的项目发现依赖于推荐的目录层次。
当你在构建蓝图(build.yaml)中指定了项目 project-a 时,Catboy 期待你的代码仓库 repo-a 的上级目录 code 是项目目录,并包含其他同属于同一项目的代码仓库 repo-b。
Catboy 在引用其他项目或其他构建目标时,会基于这样的目录关系进行查找。