使用域范围的项目时,云构建中的映像名称无效

时间:2019-09-22 00:14:30

标签: docker google-cloud-platform cloud google-cloud-build google-iam

我正在尝试使用GCP的Cloud Build构建一个容器。我正在使用quickstart doc中的简单模板。我已经成功完成了此操作。

但是,这次我使用的是“组织”下的项目。因此,项目ID是mycompany.com:projectX,而不是projectX

我无法完成构建。

当我跑步时:

gcloud builds submit --tag gcr.io/mycompany.com:project-id/helloworld

我收到以下错误:

(gcloud.builds.submit) INVALID_ARGUMENT: invalid build: invalid image name "gcr.io/mycompany.com:projectX/helloworld" 

我怀疑自--tag flag calls docker build -t $TAG . under the hooddocker image names use : to specify versions起,此格式可能无效。

有什么想法在处理组织项目时应该做什么?我无法在Cloud Build或GCP IAM文档中找到相关信息。

我尝试过的一些事情:

  • 使用cloudbuild.yaml config file$PROJECT_ID substitution来确保我的格式正确
  • 使用项目编号代替项目ID(Using the project number in the image path is not supported. Project ID must be used instead
  • 完全省略组织名称,Token exchange failed for project会拒绝该名称
  • 检查我的权限-我有Cloud Build EditorCloud Run Invoker角色,前者指定我可以“创建和取消构建”

2 个答案:

答案 0 :(得分:2)

您需要将“:”替换为“ /”

LinkedMultiValueMap<String, String> requestParams = new LinkedMultiValueMap<>()
requestParams.add("id", "1");
requestParams.add("name", "john");
requestParams.add("age", "30");

mockMvc.perform(get("my/endpoint").params(requestParams)).andExpect(status().isOk())

更多信息可以在这里找到:https://cloud.google.com/container-registry/docs/overview#domain-scoped_projects

答案 1 :(得分:0)

您可以通过运行以下命令来实现:

gcloud beta run deploy --image gcr.io/replica-20584682/helloworld --platform managed

现在默认情况下,所有项目都在组织下,并且项目ID在全局范围内是here唯一的。

由于它在部署时在全球范围内是唯一的,因此您无需提及组织。

编辑 添加了标志--platform managed