1

我正在构建一个我希望包含在 Docker 映像中的 go 测试包。二进制文件可以使用bazel build //testing/e2e:e2e_test. 这会在 bazel_bin 文件夹中创建一个二进制文件。现在我想把这个二进制文件添加到一个 docker 镜像中......

container_image(
    name = "image",
    base = "@alpine_linux_amd64//image",
    entrypoint = ["/e2e_test"],
    files = [":e2e_test"],
)

这给了我以下错误

ERROR: ...BUILD.bazel:27:16: in container_image_ rule //testing/e2e:image: non-test target '//testing/e2e:image' depends on testonly target '//testing/e2e:e2e_test' and doesn't have testonly attribute set
ERROR: Analysis of target '//testing/e2e:image' failed; build aborted: Analysis of target '//testing/e2e:image' failed

最终,我想要完成的是使用 Go Test 框架创建一个包含一套端到端测试的应用程序。然后我可以将这些测试分发到一个 docker 容器中,以便在测试环境中运行。

4

1 回答 1

1

错误是说非 testonly 目标取决于 testonly 目标,testonly的文档说这是不允许的:

如果为 True,则只有 testonly 目标(例如测试)可以依赖此目标。

等效地,testonly不允许不存在的规则依赖于存在的任何规则testonly

testonly您可以通过使您的目标像这样来做您正在寻找的东西:

container_image(
    name = "image",
    testonly = True,
    base = "@alpine_linux_amd64//image",
    entrypoint = ["/e2e_test"],
    files = [":e2e_test"],
)
于 2021-02-25T23:48:11.260 回答