GitLab 运行程序为每个作业拉取镜像

问题描述 投票:0回答:4

我有一个 GitLab 运行程序,使用

docker
作为 执行器。我的问题是,它提取我为每个作业定义的图像,这需要更多时间来完成管道

enter image description here

如何缓存图像并为

policy
job
添加拉动
runner
?请问有人吗?

docker gitlab
4个回答
19
投票

docker 执行器默认的拉取策略是“Always”。您可以使用“if-not-present”拉取策略来确保仅在本地不可用时才拉取它。

阅读选项文档此处以及政策如何运作此处


17
投票

检查最新的 GitLab 13.8(2021 年 1 月)是否可以提供帮助。

为Docker执行器配置多个镜像拉取策略

当您的 CI 作业从容器注册表检索容器映像时,网络连接丢失可能会导致数小时的开发时间损失,并对时间敏感的产品部署产生负面影响。

为了解决此弹性问题,GitLab Runner Docker 执行器现在支持在

pull_policy
配置中使用多个值,该值在 GitLab Runner
config.toml
文件中定义。

您可以使用这些值或堆叠映像拉取策略来配置拉取策略组合并减轻连接丢失造成的影响。

例如,如果您配置

pull_policy =[always, if-not-present]
,拉取策略将
always
拉取镜像。
但是,如果目标容器注册表不可用,GitLab Runner Docker 执行器将回退并使用
if-not-present
策略,这意味着映像的本地副本将用于该管道作业。

https://about.gitlab.com/images/13_8/runner-docker-pull-policy.png -- Configure multiple image pull policies for Docker executor

请参阅文档问题


GitLab 15.2(2022 年 7 月)添加:

在管道配置中设置镜像拉取策略

您可以为 GitLab Runner 如何在 CI/CD 作业中下载 Docker 镜像选择不同的 pull 策略

  • always
    (默认行为)确保图像始终被下载,
  • if-not-present
    仅当本地版本不存在时才下载图像,并且
  • never
    仅使用本地版本(切勿下载图像)。

以前,您只能在运行器级别定义拉取策略。在此版本中,我们添加了在管道级别定义拉取策略的功能。使用

pull_policy
中的
.gitlab-ci.yml
在作业或管道级别定义不同的拉取策略。共享跑步者不支持此功能。

https://about.gitlab.com/images/15_2/pull_policy.png -- Set the image pull policy in pipeline configuration

请参阅文档问题


5
投票

[[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


0
投票

更换

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

© www.soinside.com 2019 - 2024. All rights reserved.