在App Engine中部署相对路径模块

时间:2019-03-13 21:20:59

标签: google-app-engine go gcloud google-cloud-build

我的项目的文件夹结构如下

/folder1
  /feature1
     feature1.go //package feature1
     go.mod
  /feature2
     feature2.go //package feature2
     go.mod
/web
  app.yaml
  cloudbuild.yaml
  main.go //package main (starts app)
  go.mod

这是在我的/web/go.mod

内部
module mypackage

require(
  //3rd party packages
  feature1 v0.0.0
  feature2 v0.0.0
)

replace(
  feature1 => ../folder1/feature1
  feature2 => ../folder1/feature2
)

如果我运行GO111MODULE=on go build,则可以正常编译,并且可以运行我的项目。

但是,如果我做gcloud app deploy

我遇到以下错误:

go: parsing ../folder1/feature1/go.mod: open /tmp/staging614917184/folder1/feature1/go.mod: no such file or directory

go: parsing ../folder1/feature2/go.mod: open /tmp/staging614917184/folder1/feature2/go.mod: no such file or directory

这些文件肯定存在于我的项目中(否则本地的go构建将无法正常工作)。

这是我的app.yaml的相关代码段

runtime: go111
env: standard

在我改用go.mod之前,该应用已通过gcloud cli进行了很好的部署。

但是,我需要能够为正在使用的某些软件包指定特定的版本,所以我想切换到使用go模块。

通过上述更改,gcloud构建器在初始构建步骤中可以正常运行,但随后在应用程序部署步骤(gcloud应用程序部署)上失败

应用程序引擎不支持go.mod中的相对路径吗?如果可以,是否可以使此文件夹结构正常工作?

编辑:

这最终成为密钥How to authenticate a private Go Module using go 1.11 and Google App Engine Standard

由于在App Engine中部署时,未上传根文件夹结构,因此,一个解决方法是在子文件夹内的父文件夹中复制,该子文件夹用于存放app.yaml。然后使用替换语法指向go.mod中的新子文件夹。

0 个答案:

没有答案