首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用bazel构建工具修复Go存储库中的验证规则proto依赖

如何用bazel构建工具修复Go存储库中的验证规则proto依赖
EN

Stack Overflow用户
提问于 2021-10-02 12:16:36
回答 1查看 383关注 0票数 0

我正在尝试使用bazel和gazelle工具来构建一个大型Golang存储库,其中包含预先生成的proto文件。在proto定义中使用来自definitions定义的验证规则存在问题,bazel工具无法使用此依赖构建存储库。为了重现这个问题,我创建了一个带有示例github储存库服务的gRPC。如果没有envoyproxy依赖关系的验证,bazel工具就成功地构建了go包。但是引入这种依赖会引发错误。

用于构建存储库的命令:

生成存储库之前生成proto文件。

代码语言:javascript
复制
protoc -I=. -I ~/go/pkg/mod/github.com/envoyproxy/protoc-gen-validate@v0.6.1 --go_out=./../../../ --validate_out="lang=go:./../../../" --go-grpc_out=./../../../ ./protos/pinger/service.proto

使用瞪羚生成依赖关系

代码语言:javascript
复制
bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=deps.bzl%go_dependencies -build_file_proto_mode=disable_global -prune

使用瞪羚生成BUILD.bazel文件

代码语言:javascript
复制
bazel run //:gazelle

构建pinger go二进制文件

代码语言:javascript
复制
bazel build //cmd/pinger

最后一个build命令引发一个错误。

go/src/github.com/ihtkas/bazel-gazelle-ex/api/pinger/BUILD.bazel:3:11:错误加载包'@com_github_envoyproxy_protoc_gen_validate//validate':无法找到@com_google_‘@com_github_envoyproxy_protoc_gen_validate//validate’://:Probuf.bzl的包:存储库'@com_google_protobuf‘无法解析。并由'//api/pinger:pinger‘错误引用:分析目标’/cmd/pinger:pinger‘失败;构建中止:分析失败

有一个相同的github问题。有多种建议,但似乎都不适合我。解释所有的尝试都会使这个问题变得无用。我需要帮助找到一个解决问题的解决方案,并使用bazel工具和预生成的proto文件成功地构建存储库。根据建议,我将在这里或在同一个存储库中实验和分享结果。

EN

回答 1

Stack Overflow用户

发布于 2021-10-03 09:36:25

这个问题可以通过以下三个步骤来解决。

->通过bazel 命名约定修正使用来自envoyproxy代理/ from gen验证的特定提交。

代码语言:javascript
复制
go get github.com/envoyproxy/protoc-gen-validate@4f41f10dde19ec4dd9dd8cf6f7537139f52fb58b

->包括bazel工作区中"com_google_protobuf“的依赖项

代码语言:javascript
复制
http_archive(
        name = "com_google_protobuf",
        sha256 = "d0f5f605d0d656007ce6c8b5a82df3037e1d8fe8b121ed42e536f569dec16113",
        strip_prefix = "protobuf-3.14.0",
        urls = [
            "https://mirror.bazel.build/github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz",
            "https://github.com/protocolbuffers/protobuf/archive/v3.14.0.tar.gz",
        ],
    )
    
    load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")

protobuf_deps()

->将io_bazel_rules_go更新为v0.28.0

所有的修复都包含在存储库中的公共关系和合并为“工作”分公司中以供参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69416813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档