我正在学习 GitLab-ci,有一些事情让我困惑。这是我在谷歌搜索时发现的一个构建工作:
.build:
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login --username $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
script:
- docker pull $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest || true
- docker build --ssh default --cache-from $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest --build-arg BUILDKIT_INLINE_CACHE=1 --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest --tag $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA .
- docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA
- docker push $CI_REGISTRY_IMAGE/$IMAGE_NAME:latest
stage: build
image: docker:stable
services:
- docker:dind
needs: []
Run Code Online (Sandbox Code Playgroud)
为什么在建筑物图像被拉动并管道化为真实之前?我想这与缓存有关,但我不确定为什么要使用管道来实现。
另外,--ssh default 和 BUILDKIT 的目的是什么?
您应该拉取图像以利用缓存的图层,这样就不会不必要地再次构建图层。这会带来更快的构建速度、更快的更新(人们拉取新镜像时)以及更有效地利用容器注册表中的存储。
您可以在 GitLab 文档中阅读更多相关内容:使用 Docker 层缓存使 Docker-in-Docker 构建更快
对于您的其他问题:
关于--ssh default:请参阅有关此的 docker 文档。
简而言之,关于 BUILDKIT,可以实现更快、更高效的构建。
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |