installerbuilder/tasks/task19-默认构建协调器.md

184 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 任务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平台适配接口定义
- 依赖任务10Windows平台适配器和任务11Linux平台适配器
- 依赖任务12MSI包构建器、任务13DEB包构建器、任务14RPM包构建器和任务15ZIP包构建器
- 依赖任务16文件集合处理器、任务17依赖项处理器和任务18脚本处理器
- 被任务20命令行界面依赖
## 完成标准
1. BuildCoordinator接口已定义并文档完善
2. DefaultBuildCoordinator实现了所有接口方法
3. 构建方法能够成功构建安装包
4. 配置加载和验证功能正常工作
5. 构建目标确定功能正常工作
6. 处理器和构建器创建功能正常工作
7. 构建流程协调功能正常工作
8. 构建结果处理功能正常工作
9. 所有单元测试通过
10. 代码符合项目的Go语言开发规范
11. 协调器能够处理各种构建场景
12. 支持所有需求文档中的构建相关功能