Bazel 强制目标重建
在建立目标后,我需要触发这些目标的部署 为了真正不浪费任何时间我希望将此作为构建规则。现在,为了实现这一点,我希望每次都进行部署。 因此,问题是:Bazel 强制目标重建,bazel,Bazel,在建立目标后,我需要触发这些目标的部署 为了真正不浪费任何时间我希望将此作为构建规则。现在,为了实现这一点,我希望每次都进行部署。 因此,问题是: 如何强制从头开始确定地重建目标?作为第二步,这样做会更容易,例如 java_binary( name = "target1", ... ) java_binary( name = "target2", ... ) sh_binary( name = "deploy-targets", srcs =
如何强制从头开始确定地重建目标?作为第二步,这样做会更容易,例如
java_binary(
name = "target1",
...
)
java_binary(
name = "target2",
...
)
sh_binary(
name = "deploy-targets",
srcs = ["deploy-targets.sh"],
data = [":target1.jar", ":target2.jar", ...],
)
然后在需要部署时执行bazel运行//path/to:deploy targets
部署目标。sh
看起来像:
#!/bin/bash
for t in $(ls ws/path/to/*.jar); do
mvn deploy:deploy-file -Dfile=$t ...
done
动作(在构建过程中发生的动作)不应该与外部环境交互,因此部署会破坏这种契约<代码>运行,另一方面,它可以做任何事情,它只是运行一个二进制文件
使用
run
还可以解决您的“每次运行”问题:Bazel无法“缓存”二进制文件。解决这一问题的更好方法可能是能够为多个目标调用run。或者能够使用远程部署作为输入。“构建工件后部署”与“最终部署”有多重要?时间差很大,因此必须在构建工件后进行。好的,公平地说,我们必须传输多个目标,每个目标具有多个千兆字节。由于我不能运行多个目标,连续运行至少可以说是一种非常糟糕的用户体验。你能做data=[“:target1”,“:target2”,…]
?你能详细说明一下,这是什么意思吗?我能想到的所有使用数据的排列都会破坏我的一个需求。我编辑了我的答案,这会破坏你的任何需求吗?不幸的是,我想在任何目标准备就绪后立即部署。