try/catch 中的 Wildfly CLI 部署始终存在,代码为 1

Wildfly CLI deployment in try/catch always exists with code 1

我有一个相当简单的 wildfly 10 cli 部署脚本:

 try
      deploy dummy.war --server-groups=main-server-group
    catch
      deploy dummy.war --force
    end-try

脚本是 运行 来自 bash 脚本。问题是如果第一次部署失败,bash 脚本总是 returns 1。 catch 块中的部署执行良好。然而,return 代码破坏了构建,因此我需要一个解决方案。

我想构建一个无论 dummy.war 当前部署状态如何都能正常工作的部署脚本。

有什么让它发挥作用的想法吗?

谢谢!

deploy命令是在服务器上执行操作的实际命令。我认为 try/catch/finally 不适用于命令,仅适用于操作。您可以 file an issue 支持 try/catch/finally。我不确定它是否可行,但它的工作方式。

也就是说 if/else 语句应该是可能的。

if (outcome == success) of /deployment=dummy.war:read-resource
    deploy dummy.war --force
else 
    deploy dummy.war --server-groups=main-server-group
end-if

我在一个 bash 脚本中使用两个单独的 cli 命令解决了这个问题:

jboss-cli.sh --connect --command="undeploy dummy.war --all-relevant-server-groups"

jboss-cli.sh --connect --command="deploy dummy.war --server-groups=main-server-group"

如果没有 dummy.war 部署,第一个命令将失败,但如果部署命令成功,bash 脚本的退出代码为 0,所以我的构建是快乐的:)