使用Cloud Build将Ruby on Rails应用程序部署到App Engine

时间:2018-11-21 14:03:12

标签: ruby-on-rails google-app-engine google-cloud-platform google-cloud-build

我正在尝试使用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步:”正逐步陷入递归中。

Error console

1 个答案:

答案 0 :(得分:1)

Cloudbuild.yaml应该可以与App Engine Flexible一起使用,而无需使用自定义运行时。如收到的第一条错误消息中所述,如果要在非定制运行时中进行部署,则不能在同一目录中包含app.yaml和cloudbuild.yaml。要解决这种情况,请执行以下步骤:

  1. 将您的app.yaml和其他ruby文件移动到子目录(使用 原始app.yaml,无需使用自定义运行时)

  2. 在您的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'