【问题标题】:hudson and building scripts哈德逊和建筑脚本
【发布时间】:2010-08-25 15:40:06
【问题描述】:

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

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

如果任何代码测试失败,我需要知道谁会使构建失败。意味着在 blah.c 上运行的命令 x 失败返回。

非 Maven 构建的作业的最佳实践。是否可以集成maven?

请,谢谢。

【问题讨论】:

    标签: scripting continuous-integration hudson maven


    【解决方案1】:

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

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

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

    【讨论】:

    • 很好的答案.. 正是我想要的。谢谢
    【解决方案2】:

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

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

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

    【讨论】:

    • 我会在哪里做这个?你能举个例子吗? :)
    • 上面有一堆资源。这里有几个:Hudson TutorialA CI TutorialAn Ant TutorialAnother Ant Tutorial...
    • @ircmaxell 我说的是exec 命令和checkreturn。我对哈德森很熟悉。
    • 这些是ANTPhing ( 的一部分,因为Phing 实际上只是对ANT 的重新实现)...至于如何在Hudson 中执行此操作,您如何运行命令(通过 XShell 插件)?
    • 项目配置中Execute Shell 部分的帮助子部分是这样说的:By default, the shell will be invoked with the "-ex" option. So all of the commands are printed before being executed, and the build is considered a failure if any of the commands exits with a non-zero exit code. Again, add the #!/bin/... line to change this behavior.
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多