развертывание модулей относительного пути в модуле приложения - PullRequest
0 голосов
/ 14 марта 2019

структура папок моего проекта выглядит следующим образом

/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? если да, то можно ли заставить эту структуру папок работать?

EDIT:

это оказалось ключом Как аутентифицировать частный модуль Go с помощью go 1.11 и Google App Engine Standard

, поскольку в движке приложения структура корневой папки не была загружена, исправление состоит в том, чтобы скопировать родительские папки в вашей подпапке, где находится ваш app.yaml. затем вы указываете на эту новую подпапку в вашем go.mod, используя синтаксис замены.

...