Я пытаюсь развернуть облачную функцию Google с помощью модулей go, и у меня возникают проблемы с ее подбором кода в подкаталогах при использовании модулей go.
Похоже, что внутри функции gcloud развертываются build это дублирует имя пакета. Например, локально (и я ожидаю, что это импорт)
import "github.com/lwaddicor/gofunctionmodules/demoa"
, однако он будет работать только при развертывании функций gcloud, если установлено значение
import "github.com/lwaddicor/gofunctionmodules/gofunctionmodules/demoa"
Если у кого-нибудь есть какие-либо идеи о том, что здесь происходит, было бы очень признательно. Спасибо
Структура
demoa/demo.go
func.go
go.mod
go .mod
module github.com/lwaddicor/gofunctionmodules
go 1.13
веселье c. go
package gofunctionmodules
import (
"net/http"
// This is what i would expect, and it builds locally but it wont deploy
"github.com/lwaddicor/gofunctionmodules/demoa"
// With this one it deploys but locally wont build
//"github.com/lwaddicor/gofunctionmodules/gocloudfunctions/demoa"
)
// Demo demonstrates the issue with package management in cloud functions
func Demo(w http.ResponseWriter, r *http.Request) {
w.Write(demo.Demo())
}
package demoa
// Demo returns a demo string
func Demo() []byte {
return []byte("demo")
}
Затем развертывание новой облачной функции с использованием
gcloud functions deploy demofunction --entry-point Demo --project my-demo-project --runtime go113 --trigger-http --allow-unauthenticated
Deploying function (may take a while - up to 2 minutes)...failed.
ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: {"error":{"errorType":2,"canonicalCode":2,"errorId":"32633c29","errorMessage":"
serverless_function_app imports
github.com/lwaddicor/gofunctionmodules/gofunctionmodules imports
github.com/lwaddicor/gofunctionmodules/gocloudfunctions/demo: git ls-remote -q origin in /layers/google.go.gomod/gopath/pkg/mod/cache/vcs/48848540be122d75f1d2e6549925c34394ce402803530dc7962ab1442de3b180: exit status 128:
fatal: could not read Username for 'https://github.com': terminal prompts disabled
Confirm the import path was entered correctly.
If this is a private repository, see https://golang.org/doc/faq#git_https for additional information."}}
Редактировать: удалил ссылку на github, так как он только что загрузил зависимость из репозитория publi c github. Изменен демонстрационный пакет на demoa для предотвращения использования кэшированной копии github