Golang облачные функции Google с использованием go модулей не удается собрать при импорте подкаталогов - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь развернуть облачную функцию 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

...