如果go.mod在其他目录中,gcloud应用程序部署无法找到app.yaml



我已经有几个星期无法将我的Go应用程序部署到Google app Engine Flexible了,尽管我不记得更改过任何相关内容。go.mod和go.sum文件位于top目录中,而app.yaml位于./cmd/app/中。

gcloud app deploy:上的错误消息

Services to deploy:
descriptor:                  [/Users/me/go/src/github.com/me/project/cmd/app/app.yaml]
source:                      [/Users/me/go/src/github.com/me/project/cmd/app]
target project:              [project-us-central1]
target service:              [default]
target version:              [20220118t234216]
target url:                  [https://project-us-central1.uc.r.appspot.com]
target service account:      [App Engine default service account]

Do you want to continue (Y/n)?  
Beginning deployment of service [default]...
ERROR: (gcloud.app.deploy) Required file is not uploaded: [app.yaml]. 
This file should not be added to an ignore list 
(https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore)

(当然,app.yaml从未出现在忽略列表中。(

我尝试了以下方法:

  1. !app.yaml添加到.gcloudignore文件
  2. 删除.gcloudignore文件
  3. gcloud config set gcloudignore/enabled false
  4. 等待gcloud的新版本发布(Google Cloud SKD 368.0.0(

请注意,这种情况既发生在我现有的Go应用程序上,该应用程序在过去几年中多次成功部署(上一次是在2021年11月(,也发生在同一目录结构下新创建的简单web服务器应用程序上。然而,如果我创建一个没有Go模块的简单应用程序(Go.mod,so.sum(,gcloud app deploy就可以正常工作。

我刚刚在发布这个问题时找到了一个解决方法。最初,这似乎是有效的:

gcloud app deploy --appyaml=app.yaml

然而,大约30分钟后,部署总是失败,并出现以下错误:

Updating service [default] (this may take several minutes)...failed.                                                                                  
ERROR: (gcloud.app.deploy) Error Response: [13] The system encountered a fatal error

部署的版本似乎正在运行,但它会为任何请求返回HTTP404。在控制台中停止并重新启动版本后,它仍然不起作用:它主要返回HTTP 502,有时返回HTTP 503和";服务错误-27〃;。我可以在日志中看到/readiness_check调用都失败了503,failReason:"null"

经过一番努力,发现问题是./cmd/app/app.yaml文件与./go.mod./go.sum文件不在同一目录中。

我的解决方法是在调用gcloud app deploy之前临时重命名go.mod,然后在部署完成后将其移回。这样,一切又恢复了正常。

我的解决方法是将go.mod和go.sum复制到运行gcloud应用程序部署命令的工作目录中。这对我有用。

相关内容

  • 没有找到相关文章

最新更新