Java Hudson:执行数据库更新的机制

Java Hudson:执行数据库更新的机制,java,build,hudson,build-automation,continuous-deployment,Java,Build,Hudson,Build Automation,Continuous Deployment,我们计划使用Hudson自动化构建系统。我们是哈德逊的新手,或者说我们是构建自动化过程的新手。我们的应用程序在Java平台上,数据库在MS SQL上。这个(自动化)里程碑被分解为不同的目标。我们要做的第一步是自动化数据库更改(DDL/DML),在更新数据库期间,如果出现任何错误,它应该能够回滚更改并向组发送电子邮件以通知失败(说明原因)。否则,如果成功,则允许继续下一步,即使用进行构建和部署 我认为在任何情况下,我们都应该有一个以构建失败为中心的机制,如果构建失败,它应该能够回滚它本应该做的更改

我们计划使用Hudson自动化构建系统。我们是哈德逊的新手,或者说我们是构建自动化过程的新手。我们的应用程序在Java平台上,数据库在MS SQL上。这个(自动化)里程碑被分解为不同的目标。我们要做的第一步是自动化数据库更改(DDL/DML),在更新数据库期间,如果出现任何错误,它应该能够回滚更改并向组发送电子邮件以通知失败(说明原因)。否则,如果成功,则允许继续下一步,即使用进行构建和部署

我认为在任何情况下,我们都应该有一个以构建失败为中心的机制,如果构建失败,它应该能够回滚它本应该做的更改。例如,如果数据库更改失败,正如我所说的,它应该得到通知,不再继续。而且,如果数据库成功而构建过程失败(例如,由于单元测试),它应该能够回滚数据库更改。如果通知可以包含故障详细信息(如负责此操作的人员的异常详细信息),则正确诊断和查询将非常有用。我该怎么做

我们也有兴趣使用哈德逊


我想征求您的意见和建议,我应该如何计划,以及实现这一目标的好方法。

首先,您不应该混淆构建和部署。数据库更新将是部署过程的一部分,而不是构建过程的一部分。即使使用连续集成,也应将其分开。这意味着您在构建项目和运行所有JUnit测试之后进行数据库更改。如果在此之前失败,则不应执行更改,因此不需要回滚

至于你的实际问题:我不知道有哪个插件能满足你的需求。在Hudson/Jenkins中,您始终可以执行批处理/shell脚本。编写执行更改的脚本。如果脚本退出并返回错误代码,则生成应该失败

对于在构建失败时发送通知,有各种插件,包括电子邮件