构建”是软件工程师日常开发中的高频操作,也是生成可靠交付物的关键步骤。当前 Zadig 工作人员在设计层面对微服务架构有良好的支持,支持并行的构建、部署、测试多个服务。在 V1.10.0 版本中我们重新分析了 Zadig 原子构建链路上还有哪些提升空间,重点优化了单个任务构建过程,将构建效率再次提升 40%。
(Zadig 工作流并发机制)
接下来我们将逐步分析 Zadig 构建全链路流程,找出影响构建的瓶颈并做改善,同时思考后续的优化方向。
构建一般过程分析
云原生交付过程,构建通常包含 2 个阶段:
- 将源代码构建为 Artifact
- 将 Artifact 构建为镜像
源代码构建为 Artifact 过程,通常会有这样的过程:准备构建环境 (如准备构建工具) -> 拉取代码 -> 执行构建
准备构建环境的耗时相对固定,常和基础设施环境的配置关联紧密。
拉取代码强依赖于网络环境的性能,生产环境中建议使用内网环境的代码仓库,保障拉取代码的效率。
执行构建过程中,会涉及到拉取依赖库、生成构建中间产物等,这些通常可以基于对应编程语言的构建工具形成缓存,下次构建时可以基于缓存减少重复操作,极大提升构建效率,这也常是提升构建效率的重要优化环节,也是业界常见的 CI 工具,如 Codefresh、TravisCI、CircleCI 等推荐的构建配置项。
Artifa