我目前正在使用 Phing 处理并行多节点部署脚本,并且需要知道特定目标是否已被调用。
目标列表长度因节点类型而异(假设登台有 3 台服务器和 10 台生产服务器),并且我们已经有并行执行的目标。部署完所有机器后,我需要更新(单个)数据库服务器。有没有办法检查它没有被另一个线程调用/执行的特定目标?
例子:
<target name="run">
<property name="host" value="10.0.0.1, 10.0.0.2, etc..."/>
<parallelforeach list="${host}" param="host" target="execDeploy" delimiter=", "/>
</target>
<target name="execDeploy">
<!-- do some deploy -->
<phincall name="execOnce"/>
</target>
<!-- update DB -->
<target name="execOnce"/>
有没有办法做到这一点?
编辑
我可以将第一个 IP 地址添加到我的 build.properties,但这不是一个优雅的解决方案。
注意:数据库是通过特定代码(部署在每台服务器上)通过其中一个服务器而不是直接更新的。