184 lines
6.3 KiB
Markdown
184 lines
6.3 KiB
Markdown
# 任务19:默认构建协调器
|
||
|
||
## 任务描述
|
||
实现默认构建协调器,用于协调整个安装包构建过程,包括调用各种处理器和构建器。默认构建协调器将作为安装包构建的中央控制器,负责解析配置、准备环境、调用各种处理器和构建器,以及处理构建结果。
|
||
|
||
## 实现步骤
|
||
|
||
1. 定义构建协调器接口:
|
||
- 在`internal/builder`包中创建`coordinator.go`文件
|
||
- 定义BuildCoordinator接口:
|
||
```go
|
||
type BuildCoordinator interface {
|
||
// Build 构建安装包
|
||
Build(configPath string, options BuildOptions) (*BuildResult, error)
|
||
|
||
// GetSupportedTargets 获取支持的构建目标
|
||
GetSupportedTargets() []config.Target
|
||
|
||
// Validate 验证配置
|
||
Validate(configPath string) (bool, []error)
|
||
}
|
||
```
|
||
- 定义BuildOptions结构体:
|
||
```go
|
||
type BuildOptions struct {
|
||
OutputDir string // 输出目录
|
||
TargetPlatform string // 目标平台
|
||
TargetArch string // 目标架构
|
||
PackageType string // 包类型
|
||
Variables map[string]string // 构建变量
|
||
Verbose bool // 详细输出
|
||
Clean bool // 清理临时文件
|
||
}
|
||
```
|
||
- 定义BuildResult结构体:
|
||
```go
|
||
type BuildResult struct {
|
||
Success bool // 是否成功
|
||
OutputFiles []string // 输出文件路径
|
||
BuildTime time.Duration // 构建时间
|
||
Errors []error // 错误信息
|
||
Warnings []string // 警告信息
|
||
PackageResults []*package.BuildResult // 包构建结果
|
||
}
|
||
```
|
||
|
||
2. 创建默认构建协调器:
|
||
- 创建`default_coordinator.go`文件
|
||
- 定义DefaultBuildCoordinator结构体,实现BuildCoordinator接口:
|
||
```go
|
||
type DefaultBuildCoordinator struct {
|
||
logger log.Logger
|
||
configValidator config.Validator
|
||
platformFactory platform.PlatformAdapterFactory
|
||
platformDetector platform.PlatformDetector
|
||
resourceMgr resource.ResourceManager
|
||
tempDir string
|
||
}
|
||
```
|
||
- 实现构造函数:
|
||
```go
|
||
func NewDefaultBuildCoordinator(logger log.Logger, configValidator config.Validator, platformFactory platform.PlatformAdapterFactory, platformDetector platform.PlatformDetector, resourceMgr resource.ResourceManager) (*DefaultBuildCoordinator, error) {
|
||
tempDir, err := resourceMgr.CreateTempDir("build-coordinator")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return &DefaultBuildCoordinator{
|
||
logger: logger,
|
||
configValidator: configValidator,
|
||
platformFactory: platformFactory,
|
||
platformDetector: platformDetector,
|
||
resourceMgr: resourceMgr,
|
||
tempDir: tempDir,
|
||
}, nil
|
||
}
|
||
```
|
||
|
||
3. 实现构建方法:
|
||
- 实现Build方法,构建安装包
|
||
- 加载和验证配置
|
||
- 确定构建目标
|
||
- 准备构建环境
|
||
- 调用各种处理器和构建器
|
||
- 处理构建结果
|
||
- 清理临时文件
|
||
|
||
4. 实现配置加载和验证:
|
||
- 创建loadAndValidateConfig方法,加载和验证配置
|
||
- 使用配置验证器验证配置
|
||
- 处理验证错误
|
||
- 应用构建选项中的变量
|
||
|
||
5. 实现构建目标确定:
|
||
- 创建determineBuildTargets方法,确定构建目标
|
||
- 根据构建选项确定目标平台和架构
|
||
- 处理多目标构建
|
||
- 验证目标是否受支持
|
||
|
||
6. 实现处理器和构建器创建:
|
||
- 创建createProcessors方法,创建各种处理器
|
||
- 创建createBuilders方法,创建各种构建器
|
||
- 根据目标平台和包类型选择合适的构建器
|
||
- 初始化处理器和构建器
|
||
|
||
7. 实现构建流程协调:
|
||
- 创建coordinateBuild方法,协调构建流程
|
||
- 按顺序调用各种处理器
|
||
- 调用包构建器
|
||
- 收集构建结果
|
||
- 处理构建错误
|
||
|
||
8. 实现构建结果处理:
|
||
- 创建handleBuildResults方法,处理构建结果
|
||
- 收集输出文件
|
||
- 生成构建报告
|
||
- 处理警告和错误
|
||
|
||
## 单元测试要求
|
||
|
||
1. 测试构建方法:
|
||
- 验证Build方法
|
||
- 测试配置加载和验证
|
||
- 测试构建目标确定
|
||
- 测试构建流程协调
|
||
|
||
2. 测试配置加载和验证:
|
||
- 验证配置加载
|
||
- 测试配置验证
|
||
- 测试验证错误处理
|
||
- 测试变量应用
|
||
|
||
3. 测试构建目标确定:
|
||
- 验证目标确定
|
||
- 测试多目标构建
|
||
- 测试目标支持验证
|
||
|
||
4. 测试处理器和构建器创建:
|
||
- 验证处理器创建
|
||
- 测试构建器创建
|
||
- 测试平台和包类型选择
|
||
- 测试初始化过程
|
||
|
||
5. 测试构建流程协调:
|
||
- 验证构建流程
|
||
- 测试处理器调用顺序
|
||
- 测试构建器调用
|
||
- 测试结果收集
|
||
- 测试错误处理
|
||
|
||
6. 测试构建结果处理:
|
||
- 验证结果处理
|
||
- 测试输出文件收集
|
||
- 测试报告生成
|
||
- 测试警告和错误处理
|
||
|
||
## 依赖关系
|
||
|
||
- 依赖任务01(项目初始化)
|
||
- 依赖任务02(日志系统实现)
|
||
- 依赖任务03(错误处理框架)
|
||
- 依赖任务04(资源管理器实现)
|
||
- 依赖任务05(配置模型定义)
|
||
- 依赖任务08(配置验证器)
|
||
- 依赖任务09(平台适配接口定义)
|
||
- 依赖任务10(Windows平台适配器)和任务11(Linux平台适配器)
|
||
- 依赖任务12(MSI包构建器)、任务13(DEB包构建器)、任务14(RPM包构建器)和任务15(ZIP包构建器)
|
||
- 依赖任务16(文件集合处理器)、任务17(依赖项处理器)和任务18(脚本处理器)
|
||
- 被任务20(命令行界面)依赖
|
||
|
||
## 完成标准
|
||
|
||
1. BuildCoordinator接口已定义并文档完善
|
||
2. DefaultBuildCoordinator实现了所有接口方法
|
||
3. 构建方法能够成功构建安装包
|
||
4. 配置加载和验证功能正常工作
|
||
5. 构建目标确定功能正常工作
|
||
6. 处理器和构建器创建功能正常工作
|
||
7. 构建流程协调功能正常工作
|
||
8. 构建结果处理功能正常工作
|
||
9. 所有单元测试通过
|
||
10. 代码符合项目的Go语言开发规范
|
||
11. 协调器能够处理各种构建场景
|
||
12. 支持所有需求文档中的构建相关功能 |