检查一下是否可以使用最新的 GitLab 13.8 (2021年1月)解决问题。
为Docker执行器配置多个镜像拉取策略
当CI job从容器注册表检索容器镜像时,网络连接中断可能导致数小时的开发时间丢失,并对时限敏感的产品部署产生负面影响。
为了解决这个可靠性问题,GitLab Runner Docker执行器现在支持在GitLab Runner
config.toml
文件中定义的pull_policy
配置中使用多个值。您可以使用这些值或堆叠的镜像拉取策略来配置拉取策略的组合,并减轻网络中断所造成的影响。
例如,如果配置了
pull_policy =[always, if-not-present]
,则拉取策略将始终拉取镜像。
但是,如果目标容器注册表不可用,则GitLab Runner Docker执行器将退而使用if-not-present
策略,这意味着该管道作业将使用镜像的本地副本。
GitLab 15.2 (2022年7月) 新增:
您可以选择不同的拉取策略,用于GitLab Runner在CI/CD作业中下载Docker镜像。
always
(默认行为)始终确保下载镜像,if-not-present
仅在本地没有版本时才下载镜像,和never
仅使用本地版本(从不下载镜像)。以前,您只能在Runner级别定义拉取策略。在此版本中,我们已经添加了在流水线级别上定义拉取策略的功能。在.gitlab-ci.yml
文件中使用pull_policy
来定义作业或流水线级别的不同拉取策略。此功能不受共享Runner支持。
将[[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
.gitlab-ci.yml
文件中的语法应该长什么样子? - Jananath Banukapull_policy
的位置。他们没有提到在哪里。只是提到了image
和service
,但没有说明如何正确地放置它。 - Jananath Banuka/var/lib/docker/volumes/gitlab-runner-config/_data/
,请更新[runners.docker]
部分。 - D'Ante Barnes