Как использовать основной пакет в другой папке, чем app.yaml для appengine Go?

Я пытаюсь загрузить приложение Go в среду выполнения appegnine Go 1.12. Мой основной пакет находится в папке cmd, как показано https://cloud.google.com/appengine/docs/standard/go112/config/appref#runtime_and_app_elements

Но если я попробую любой из подходов, описанных в официальных документах, я получу следующую ошибку:

ERROR: (gcloud.app.deploy) An error occurred while parsing file: [/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml]
Unable to assign value './cmd/resource-metadata-server' to attribute 'main':
Value './cmd/resource-metadata-server' for main does not match expression '^(?:[\w.\\\/:]+)$'
  in "/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml", line 3, column 7
ERROR: (gcloud.app.deploy) An error occurred while parsing file: [/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml]
Unable to assign value 'kmodules.xyz/resource-metadata/cmd/resource-metadata-server' to attribute 'main':
Value 'kmodules.xyz/resource-metadata/cmd/resource-metadata-server' for main does not match expression '^(?:[\w.\\\/:]+)$'
  in "/home/tamal/go/src/kmodules.xyz/resource-metadata/app.yaml", line 2, column 7

Проблема в том, что мне не разрешено использовать - в записи main в app.yaml. Это почему? Можно ли это исправить?

Я использую

$ gcloud version
Google Cloud SDK 257.0.0
app-engine-go 
app-engine-python 1.9.86
beta 2019.05.17
bq 2.0.46
cloud-datastore-emulator 2.1.0
core 2019.08.02
gsutil 4.41

person codefx    schedule 12.08.2019    source источник


Ответы (1)


Код ошибки предполагает, что строка, передаваемая в main, должна соответствовать регулярному выражению ^(?:[\w.\\\/:]+)$. Это означает, что предоставленная строка должна соответствовать любому символу внутри набора символов, например /w, который может быть любым символом слова (буквенно-цифровой символ и подчеркивание), ., который соответствует символу ., \\, который соответствует символу \, \/, который соответствует символу /, и :, который соответствует символу :.

Обратите внимание, что в наборе символов нет -, который позволил бы вам включить символ - в строку, предоставленную в main, при соблюдении регулярного выражения, которым он ограничен. Таким образом, до тех пор, пока это ограничение исключает - в наборе символов, main ожидаемая строка в основном атрибуте должна быть такой, которая также исключает - при соблюдении остальной части выражения.

person JKleinne    schedule 13.08.2019