gradlew未返回flyway命令的错误状态

gradlew未返回flyway命令的错误状态,gradle,flyway,gradlew,Gradle,Flyway,Gradlew,gradlew运行flywayRepair或flywayMigrate时,无论成功与否,返回状态始终为0(零): ./gradlew --quiet -Pflyway.initOnMigrate=true -Pflyway.url=jdbc:mysql://localhost:3306/mars flywayRepair FAILURE: Build failed with an exception. * What went wrong: Execution failed for task

gradlew运行flywayRepair或flywayMigrate时,无论成功与否,返回状态始终为0(零):

./gradlew --quiet -Pflyway.initOnMigrate=true -Pflyway.url=jdbc:mysql://localhost:3306/mars flywayRepair

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':common:flywayRepair'.
> Error occurred while executing flywayRepair
  Unable to obtain Jdbc connection from DataSource (jdbc:mysql://localhost:3306/mars) for user 'flyaway'
  Communications link failure

  The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
  Connection refused


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Exit status from flywayRepair for mars is 0

这听起来像是一个渐变问题。我建议您向他们提交一个问题。

对于失败的构建,
gradle
gradlew
都将返回退出状态1,因此您的shell脚本可能有问题。可能会看到。

您正在检查shell脚本中/usr/bin/tee的退出状态,因为这是最后执行的命令,在您的情况下,它当然始终为0


您应该测试$PIPESTATUS[0],如本页所述:

无法复制。你是说“火星flywayRepair的退出状态为0”是输出的一部分,这就是问题所在吗?或者您是在谈论
gradle
命令的实际退出状态吗?调用gradle任务的shell脚本将发出“针对mars的fltwatRepair的退出状态为0”。我将继续介绍脚本示例的链接听起来您的shell脚本有问题。失败的Gradle生成具有退出状态1。当新生成可能需要架构迁移时,部署脚本将发布到部署自动化将调用脚本“marssrv marsdb.sh”的位置,创建脚本“db repair”是为了手动测试不同的策略,方法是单独应用flyway函数,而不是像部署脚本中那样集中应用flyway函数。仅在此基础上进行扩展,您还可以设置-o pipefail,这将防止管道中的错误被掩盖。有关详细信息,请参阅。我的链接也包含此选项;-)