我有一个Gitlab-CE 13.0.5的on-prem实例在运行,我使用Gitlab的官方docker镜像,我已经启用了集成容器注册表。
使用个人访问令牌在注册表测试登录和推送,无论是在命令行还是在CI脚本中都能正常工作。
在 CI 脚本中使用 CI job token,docker 登录通过,docker 推送失败。
使用组访问令牌(具有读写注册表权限),登录和推送当然都失败。在命令行上手动测试组访问令牌,登录步骤也失败。
我检查了注册表的日志文件,我只看到了拒绝访问的消息,没有进一步的提示,可能是什么问题。
我考虑过用正确的组和项目名称的结构来标记图像。
有谁知道我应该在哪里继续搜索?
谢谢,谢谢Wolfgang
终于,我找到了!
如果登录命令中的注册表名称中有端口号,那么在标记和推送镜像时就必须使用包括端口号在内的完全相同的名称。
所以,如果在 gitlab 配置中的变量 gitlab_rails['registry_port'] = "443"
提到了默认端口号 443,它出现在变量 $CI_REGISTRY 中,您必须在标签和推送命令中使用它。
在标签和推送命令中使用它。gitlab_rails['registry_port'] = ""
到一个空字符串,让系统仍然使用443端口 - 因为它是默认端口。然而,它将从名称中被删除。
说实话,我有点惊讶。