背景
- 使用 gitlab-runner 做 CI/CD
- 使用 docker 的方式启动 gitlab-runner
- gitlab-ci.yml 中使用 docker dind 的方式打包和构建镜像
- 我们使用了自建的 Maven 仓库以及 Docker 镜像仓库。
现象
每次在推送代码到指定分支时,一次完整的 CI/CD 流水线耗时在 32~36 分钟。流程中包含两个作业,分别是打包 SpringBoot 项目和构建以及部署 Docker 镜像。
- 作业 1:打包 SpringBoot 的过程每次耗时在 17 分钟左右。
- 作业 2:构建和部署 Docker 镜像耗时约在 16 分钟左右。
作业 1 的问题
通过查看作业 1 的日志发现,主要耗时有两点,分别是:
- 下载 maven 依赖包。
- 上传打包好的 SprintBoot jar 包。
作业 2 的问题
通过查看作业 2 的日志发现,主要耗时也是两点,分别为:
- 下载生成的 SpringBoot jar 包。
- 上传打包好的 Docker 镜像。
原因
Maven依赖包, SpringBoot jar 包以及 docker 镜像的上传或下载的瓶颈都在网络上。
解决方案
在 gitlab-runner 中配置 maven 仓库、gitlab 以及 docker 仓库走内网访问,加速上传和下载的过程。在 /gitlab-runner/config.toml
配置文件中添加如下内容:
|
|