0

我正在尝试使用 Cloud Build 将 Ruby on Rails 应用程序自动部署到 App Engine。

我的app.yaml长这样

runtime: ruby
env: flex
entrypoint: bundle exec rails server

但是我收到了这个错误,

Step #1: ERROR: (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 步:”像陷入递归一样增长为几个。

错误控制台

4

1 回答 1

1

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

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

  2. 在您的 cloudbuild.yaml 步骤下,通过添加第三个指定 app.yaml 路径的参数来修改 app deploy 的参数。

下面是一个例子:

==================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' 
于 2018-11-21T16:07:45.457 回答