gpt4 book ai didi

具有 bazel 构建的 protobuf 依赖项的 Google 云函数

转载 作者:IT王子 更新时间:2023-10-29 02:06:59 25 4
gpt4 key购买 nike

如果我使用 bazel 构建依赖于 protobuf 的 Go 无服务器函数,bazel 将使 protobuf 生成的 go 代码在我指定的导入路径中可用。

Go 的 Google 云函数需要使用 go 模块。

如何将 bazel 创建的虚拟导入路径添加到我的 go.mod 文件中?部署到谷歌云的功能失败,因为无法解析虚拟导入。 (G cloud 要求我上传我的 go 源代码,AWS lambdas 允许我上传一个二进制文件,这样就可以了。)

我猜我将不得不使用 AWS lambdas,使用无服务器容器,或者编写一个 genrule 将 proto 生成代码的输出复制到我的源目录中,但我想避免这种丑陋。

最佳答案

我在 Google on Go 和 Google Cloud Functions 工作。

我看到了一些使用 Cloud Functions 的选项:

  • 公开发布生成的代码。您可能出于各种原因不想这样做。
  • 将生成的代码复制到您的源目录中。这是最简单的。当您部署您的函数时,当前目录将被压缩并发送以进行构建。我们不会从您当前目录之外复制任何依赖项。如果这样做,您可以通过在包路径前加上目录的模块路径来导入生成的代码。
  • 使用 vendor 。如果您运行 go mod vendor 并获取生成的代码(在您选择的任何路径),它将创建一个包含所有依赖项的 vendor 目录。不过,Cloud Functions 构建器更喜欢 go.mod 而不是 vendor。因此,您必须 .gcloudignore go.modgo.sum 文件,以确保在您部署代码。 https://cloud.google.com/functions/docs/writing/specifying-dependencies-go有更多信息。

关于具有 bazel 构建的 protobuf 依赖项的 Google 云函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com