我的目标是为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'
Dockerfile
和cloudbuild.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/