我有一个 GitLab 运行程序,使用
docker
作为 执行器。我的问题是,它提取我为每个作业定义的图像,这需要更多时间来完成管道
如何缓存图像并为
policy
或 job
添加拉动 runner
?请问有人吗?
检查最新的 GitLab 13.8(2021 年 1 月)是否可以提供帮助。
为Docker执行器配置多个镜像拉取策略
当您的 CI 作业从容器注册表检索容器映像时,网络连接丢失可能会导致数小时的开发时间损失,并对时间敏感的产品部署产生负面影响。
为了解决此弹性问题,GitLab Runner Docker 执行器现在支持在
配置中使用多个值,该值在 GitLab Runnerpull_policy
文件中定义。config.toml
您可以使用这些值或堆叠映像拉取策略来配置拉取策略组合并减轻连接丢失造成的影响。
例如,如果您配置
,拉取策略将pull_policy =[always, if-not-present]
拉取镜像。always
但是,如果目标容器注册表不可用,GitLab Runner Docker 执行器将回退并使用策略,这意味着映像的本地副本将用于该管道作业。if-not-present
GitLab 15.2(2022 年 7 月)添加:
在管道配置中设置镜像拉取策略
您可以为 GitLab Runner 如何在 CI/CD 作业中下载 Docker 镜像选择不同的 pull 策略。
(默认行为)确保图像始终被下载,always
仅当本地版本不存在时才下载图像,并且if-not-present
仅使用本地版本(切勿下载图像)。never
以前,您只能在运行器级别定义拉取策略。在此版本中,我们添加了在管道级别定义拉取策略的功能。使用
中的pull_policy
在作业或管道级别定义不同的拉取策略。共享跑步者不支持此功能。.gitlab-ci.yml
将
[[runners]] [runners.docker] pull_policy = "if-not-present"
添加到 config.toml。
如何工作:https://docs.gitlab.com/runner/executors/docker.html#how-pull-policies-work
config.toml:https://docs.gitlab.com/runner/configuration/advanced-configuration.html
更换
image: 19950818/banu-terraform-ansible-cicd:v1.1
与
image:
name: 19950818/banu-terraform-ansible-cicd:v1.1
pull_policy: "if-not-present"
额外提示:
阅读 gitlab-ci.yml 文件的 schema 以获得更准确的格式概述: https://gitlab.com/gitlab-org/gitlab/-/raw/master/app/assets/javascripts/editor/schema/ci.json