我正在尝试使用Cloud Build自动将Ruby on Rails应用程序部署到App Engine。
我的app.yaml
看起来像这样,
runtime: ruby
env: flex
entrypoint: bundle exec rails server
但是我遇到这个错误,
步骤1:错误:(gcloud.app.deploy)当前目录中有一个cloudbuild.yaml,并且/workspace/app.yaml中的runtime字段当前设置为[runtime:ruby]。要使用cloudbuild.yaml构建自定义运行时,请将运行时字段设置为[runtime:custom]。要继续使用[ruby]运行时,请从此目录中删除cloudbuild.yaml。
然后我尝试将运行时更改为custom
并添加一个Dockerfile,因为自定义运行时需要一个Dockerfile。
但是现在我收到一个错误消息,
错误:(gcloud.app.deploy)自定义运行时必须在源目录中具有[Dockerfile]和[cloudbuild.yaml]中的一个。 [/ home / milindu / Projects / ElePath-Ruby]包含两者
然后我也删除了Dockerfile。但是现在进入这种奇怪的情况。您会看到“第1步:”正逐步陷入递归中。
答案 0 :(得分:1)
Cloudbuild.yaml应该可以与App Engine Flexible一起使用,而无需使用自定义运行时。如收到的第一条错误消息中所述,如果要在非定制运行时中进行部署,则不能在同一目录中包含app.yaml和cloudbuild.yaml。要解决这种情况,请执行以下步骤:
将您的app.yaml和其他ruby文件移动到子目录(使用 原始app.yaml,无需使用自定义运行时)
在您的cloudbuild.yaml步骤下,修改用于应用程序部署的参数 通过添加第三个来指定您app.yaml的路径。
下面是一个示例:
==================FROM:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']
timeout: '1600s'
===================TO:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '[SUBDIRECTORY/app.yaml]']
timeout: '1600s'