使用构建系统运行测试或与集群交互

时间:2018-07-28 11:05:04

标签: bazel

以下类似项目的目的是将Bazel用于构建软件以外的其他事情?

他们只是方便地为run命令提供环境(而不是构建可移植的可执行文件)还是我错过了什么?

我能说的最好的一点是,根据知识的变化,Bazel只能用于运行E2E测试的子集。

1 个答案:

答案 0 :(得分:2)

免责声明:我对k8s和docker仅有一点了解。

Bazel不仅用于构建和测试,还可以部署,就像您在那些项目中发现的规则一样。

  

我能说的最好的一点是,根据知识的变化,Bazel只能用于运行E2E测试的子集。

正确,但也将测试扩展到部署。如果您只更改了注入图像中的Go二进制文件中的单个字符串,Bazel便可以将rules_k8s,rules_docker和rules_go用于:

  1. 以增量方式可复制地重建最小设置文件以 生成新的Go可执行文件
  2. 创建一个包含Go可执行文件的新图像层(不使用Docker)
  3. 将图像推送到注册表中
  4. 重新部署将pod更改为集群

值得注意的是,如果您未更改源文件,Bazel会由于其可复制性而始终创建具有相同摘要的图像。这意味着,即使您两次执行bazel run两次以上,您现在也可以信任部署工作流来重新部署/重新启动Pod。

有关更多信息,请查看BazelCon 2017演讲:Using Bazel for Fast, Correct Docker Deployments w/ Databricks

有趣的事实:您也可以使用bazel run从0.15.0开始为构建目标启动REPL。 HaskellScala规则使用此规则。