如何解决如何使用多个并发作业处理 Docker 登录到 Gitlab 容器注册表?
我们使用 Gitlab CI/CD,在本地托管机器上使用运行器构建和部署,并使用 Gitlab 容器注册表来存储我们的 Docker 映像。我们像这样登录 Gitlab 注册表:
default:
before_script:
- "docker login -u \"${CI_REGISTRY_USER}\" -p \"${CI_REGISTRY_PASSWORD}\" \"${CI_REGISTRY}\""
这适用于我们部署环境中的运行器,每个运行器只同时运行一个作业。但是,我们的构建机器应该同时运行多个构建作业。问题是,Gitlab 为每个作业提供的 ${CI_REGISTRY_PASSWORD}
是不同的,而且似乎只对那个作业有效。因此,当我们同时运行多个作业时,它们对 docker login
的调用会相互覆盖,导致其他作业因 authentication required
错误而失败。
目前,我们正在通过在每个 docker login
或 docker push
之前执行新的 docker pull
命令来解决此问题,以尽量减少另一个作业执行自己的登录命令的机会介于两者之间,但必须有更好的方法。
使用并发作业管理 Docker 注册表登录的推荐解决方案是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。