1 回答

TA貢獻1887條經驗 獲得超5個贊
只需運行;
bazel build //some/of/my/path:my_test
它應該將二進制文件的路徑打印到標準輸出。
作為您當前方法的替代方案,我可能建議您使用bazelbuild/rules_docker#go_image這是一種用于構建容器的 Bazel 感知方法。
編輯:OP 已經澄清了這個問題,盡管我留下了上面的原始答案,因為其他人可能會覺得它很有用。
當您將二進制/測試與一些數據捆綁在一起時,數據屬性下的文件將成為一組“運行文件”。每種語言都有各種用于解析運行文件的庫。對于 golang,您需要使用 rules_go 中的bazel pkg來解析您的運行文件。例如
go_test(
name = "my_test",
srcs = ["my_test.go"],
data = glob(["testdata/**"]) + [
"//some/of/my/path/my_tool:my_tool",
],
gotags = ["my_test"],
deps = [
"//pkg/util/contextutil",
"//pkg/util/log",
# NEW dep
"@rules_go//rules_go/go/tools/bazel",
...
],
)
你的my_test.go;
package my_lucky_test
# NEW
import(
"github.com/bazelbuild/rules_go/go/tools/bazel"
)
#...
pathForMyTool, ok := bazel.FindBinary("some/of/my/path/my_tool", "my_tool")
if !ok {
# Error handling
}
hostConfig := container.HostConfig{
Binds := []string {""%s/my_tool-bin:/workding-dir/my_tool-bin", pathForMyTool}
}
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報