哈德森替代建设经理
我在一家软件公司工作,我们的主要开发语言是Java。 当然,我们使用Hudson进行连续构建,这非常出色。 然而,哈德森并不擅长我们要求它做的其他事情。 我们还使用Hudson作业来部署二进制文件,刷新数据库,运行负载测试,运行回归等。当存在构建依赖关系时(即负载测试需要数据库刷新),我们真的遇到了麻烦。
以下是哈德逊不会做的,我们真正需要的一件事:
构建依赖关系:它支持Ant构建的构建依赖关系,但不支持Hudson作业。 我们使用URL调用功能来导致Hudson作业调用另一个Hudson作业。 问题在于哈德森总是返回200,并且在作业完成之前不会阻塞。 这意味着调用作业不知道a)构建是否失败,b)如果没有失败,需要多长时间。
不必使用shell脚本来指定构建的行为就好了,但这并非完全必要。
任何方向都不错。 也许我们没有以正确的方式使用Hudson(也就是说,所有的构建都是Ant构建?),或者我们需要另一种产品来实现我们的一键式部署,负载测试,迁移,数据库刷新等。
编辑:
为了澄清,我们的参数在我们的构建中会根据参数产生不同的依赖关系。 也就是说,有时我们需要使用数据库刷新进行负载测试,有时不需要刷新数据库。 不幸的是,为每个参数组合(如Join插件所需)创建一个Hudson作业将不起作用,因为有时不同的组合可能会导致数十个作业。
Hudson有一个CLI,它允许你向Hudson实例发送命令。 使用“帮助”来获得确切的细节。 我相信有一个可以让你调用构建并等待其完成。
http://wiki.hudson-ci.org/display/HUDSON/Hudson+CLI
我不认为我理解你的“构建依赖”要求。 任何Hudson作业都可以配置为触发另一个(下游)作业,或由另一个(上游)作业触发。
Downstream-Ext插件和Join插件允许更复杂的构建依赖关系的定义。
你需要为你的'依赖'额外工作吗?
您的依赖对我来说听起来像是一个额外的构建步骤。 刷新数据库的脚本可以存储在您的scm中,每一个需要此步骤的构建都会将其检出。 如果参数“db refresh”为true,则可以调用该脚本。 这可以通过不止一个模块完成。 有什么优势? 你的脚本逻辑在你的scm中(记录变化的历史总是很好的)。 您仍然可以为所有测试作业更新一次脚本(因为他们都检出相同的脚本)。 另外,您不需要查看几个脚本来确定您的测试是否成功。 特别是如果你有一个作业是多条执行线的一部分,就很难找出哪个作业触发了哪个作业。 另一个优点是你的哈德逊职位较少,因此更容易维护。
链接地址: http://www.djcxy.com/p/50757.html