哈德森和建筑脚本

时间:2010-08-25 15:40:07

标签: scripting continuous-integration hudson maven

我有一些代码与其他代码运行。假设命令x运行代码blah.c

我编写了一个脚本来检查该命令是否成功执行。我能够确定这一点。我将在hudson中提供的执行构建框中运行该脚本。

如果任何代码测试失败,我需要知道构建失败的人。意思是命令x在blah.c上运行失败了。

不是由maven建立的工作的最佳做​​法。是否有可能整合maven?

请,谢谢你。

3 个答案:

答案 0 :(得分:2)

如果您正在运行shell脚本,则可以通过退出非零错误代码来指示失败。

run_my_command foo
if [ $? -ne 0 ]; then
    echo "run_my_command failed"
    exit 1
fi

我同意@ircmaxell的观点,即编写构建脚本比在Hudson中直接编写shell脚本更好。

答案 1 :(得分:1)

就我个人而言,我使用ANTPhing作为此类事情。您可以指定完成“目标”所需的步骤。

因此,在您的情况下,您需要指定exec任务。然后,您将在该任务上设置checkreturn属性。这样,如果命令返回除0之外的任何内容,它将使目标失败。而Hudson将自动失败。

关于这一点的好处是,您可以在Hudson之外手动执行ANT构建任务(因此您无需提交验证它是否将成功构建)。我个人将我的phing build.xml文件保存在与我的项目相同的版本控制中,以便我始终可以使用它...

答案 2 :(得分:0)

是的,您可以使用M2 Extra Steps插件为hudson发布shell命令,在maven构建之前/之后,使用条件控制(例如,如果此命令失败,跳过运行Maven,中止构建)

我们使用它来在运行构建之前清理一些东西。