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

6.3 KiB
Raw Blame History

任务19默认构建协调器

任务描述

实现默认构建协调器,用于协调整个安装包构建过程,包括调用各种处理器和构建器。默认构建协调器将作为安装包构建的中央控制器,负责解析配置、准备环境、调用各种处理器和构建器,以及处理构建结果。

实现步骤

  1. 定义构建协调器接口:

    • internal/builder包中创建coordinator.go文件
    • 定义BuildCoordinator接口
      type BuildCoordinator interface {
          // Build 构建安装包
          Build(configPath string, options BuildOptions) (*BuildResult, error)
      
          // GetSupportedTargets 获取支持的构建目标
          GetSupportedTargets() []config.Target
      
          // Validate 验证配置
          Validate(configPath string) (bool, []error)
      }
      
    • 定义BuildOptions结构体
      type BuildOptions struct {
          OutputDir      string            // 输出目录
          TargetPlatform string            // 目标平台
          TargetArch     string            // 目标架构
          PackageType    string            // 包类型
          Variables      map[string]string // 构建变量
          Verbose        bool              // 详细输出
          Clean          bool              // 清理临时文件
      }
      
    • 定义BuildResult结构体
      type BuildResult struct {
          Success        bool                  // 是否成功
          OutputFiles    []string              // 输出文件路径
          BuildTime      time.Duration         // 构建时间
          Errors         []error               // 错误信息
          Warnings       []string              // 警告信息
          PackageResults []*package.BuildResult // 包构建结果
      }
      
  2. 创建默认构建协调器:

    • 创建default_coordinator.go文件
    • 定义DefaultBuildCoordinator结构体实现BuildCoordinator接口
      type DefaultBuildCoordinator struct {
          logger           log.Logger
          configValidator  config.Validator
          platformFactory  platform.PlatformAdapterFactory
          platformDetector platform.PlatformDetector
          resourceMgr      resource.ResourceManager
          tempDir          string
      }
      
    • 实现构造函数:
      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. 支持所有需求文档中的构建相关功能