我正在尝试将本教程中的 Go 示例改编为在私有存储库中使用依赖项的内容。以下是 Cloud Function 示例代码:
package helloworld
import (
"context"
"log"
"github.com/kurtpeek/my-private-repo/mypackage"
)
// PubSubMessage is the payload of a Pub/Sub event.
type PubSubMessage struct {
Data []byte `json:"data"`
}
// HelloPubSub2 consumes a Pub/Sub message.
func HelloPubSub2(ctx context.Context, m PubSubMessage) error {
name := string(m.Data)
if name == "" {
name = "World"
}
log.Printf("Hello, %s!", name)
log.Println(mypackage.SayHello())
return nil
}
在SayHello()私人回购中定义github.com/kurtpeek/my-private-repo为
package mypackage
// SayHello says hello
func SayHello() string {
return "Hello, world!"
}
如果不调用mypackage.SayHello(),Cloud Function 将按预期部署和运行。我也可以在跑步HelloPubSub2后main.go跑步
git config url."git@github.com".insteadOf "https://github.com"
并将我的 SSH 密钥添加到存储库(参见这篇Medium 文章)。
但是,如果我尝试使用mypackage.SayHello(),我会收到以下错误:
无法读取“ https://github.com ”的用户名
这是完整的终端输出:
>
gcloud functions deploy HelloPubSub2 --runtime go113 --trigger-topic mytopic
Created .gcloudignore file. See `gcloud topic gcloudignore` for details.
WARNING: Function created with limited-access IAM policy. To enable unauthorized access consider "gcloud alpha functions add-iam-policy-binding HelloPubSub2 --member=allUsers --role=roles/cloudfunctions.invoker"
Deploying function (may take a while - up to 2 minutes)...failed.
部署此 Cloud Function 的最佳方式是什么?我应该运行go mod vendor然后更改依赖项以引用vendor/目录吗?(不过,这似乎每次都做起来很麻烦)。
largeQ
相关分类