我的目标是为Django Rest Framework项目创建CI / CD。我正在使用Google Source Repository进行版本控制,并使用Google Compute Engine VM实例进行部署。这个项目的Dockerfile可以创建图像,我也可以运行该图像。
现在,在Source Repository上,当我将其他分支与master分支合并时,云触发器应该能够创建新图像,将其推送到Container Repository并使用新容器更新Google Compute Engine VM的现有实例。
到目前为止,每次对master分支Cloud Build - Trigger的推送都可以创建镜像并将其推送到Container Registry上。但是Cloud Build - Trigger使用Dockerfile而不是cloudbuild.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
  • 导致此错误的原因以及如何解决此问题。
  • 您认为我编写cloudbuild.yaml的方式是否可以帮助我实现目标。
  • 最佳答案

    那个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 ...。

    关于docker - Cloud Build无法创建镜像并将其发布到Container Registry,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62733109/

    10-10 18:20