首页 > 解决方案 > Cloud Build 无法创建映像并将其发布到 Container Registry

问题描述

我的目标是为 Django Rest Framework 项目创建 CI/CD。我正在使用Google Source Repository版本控制和Google Compute Engine VM实例进行部署。Dockerfile这个项目的能够创建图像,我也能够运行该图像。

现在,Source Repository当我将其他分支与主分支合并时,云触发器应该能够创建一个新图像,将其推送到并使用新容器Container Repository更新现有实例。Google Compute Engine VM

到目前为止,每次推送到 master 分支Cloud Build - Trigger都能够创建一个图像并将其推送过来Container Registry。但不Cloud Build - Trigger使用.Dockerfilecloudbuild.yaml

这是cloudbuild.ymal我装箱的。

steps:
    - name: 'gcr.io/myproject-100/docker'
      args: [ 'build', '-t', 'gcr.io/myproject-100/dropoff:', '.' ]

    - name: 'gcr.io/cloud-builders/gcloud'
      args: [ 'compute', 'instance', 'update-container', 'dropoff-staging-v3', --zone='northeast1-a' ]
    
    images:
    - 'gcr.io/myproject-100/dropoff'

Dockerfilecloudbuild.yaml位于项目文件夹的根目录中。当我运行命令时,gcloud builds submit --config cloudbuild.yaml我收到此错误 -

ERROR: (gcloud.builds.submit) parsing cloudbuild.yaml: while parsing a block collection
  in "cloudbuild.yaml", line 2, column 5
expected <block end>, but found u'?'
  in "cloudbuild.yaml", line 4, column 5
  1. 是什么导致了这个错误,我该如何解决这个问题。
  2. 你认为我写的方式cloudbuild.yaml会帮助我实现我的目标吗?

标签: dockergoogle-cloud-platformgoogle-compute-enginegoogle-cloud-build

解决方案


cloudbuild.yaml似乎完全无关,

因为第 2 行和第 4 行,第 5 列没有“u”;整条线都没有。

请参阅YAML in a Nutshell了解如何正确缩进;它应该看起来更像这样:

steps:
  - name: 'gcr.io/dropoff-280002/docker'
    args: [ 'build', '-t', 'gcr.io/dropoff-280002/dropoff:', '.' ]
  - name: 'gcr.io/cloud-builders/gcloud'
    args: [ 'compute', 'instance', 'update-container', 'dropoff-staging-v3', --zone='northeast1-a' ]    
images:
  - 'gcr.io/dropoff-280002/dropoff'

或者看看这个cloudbuild.yaml......众所周知,它正在工作。


推荐阅读