【问题标题】:How to trigger a hudson job by another job which is in a different hudson如何通过另一个位于不同哈德逊的工作触发哈德逊工作
【发布时间】:2011-01-21 09:41:46
【问题描述】:

我在 Hudson A 有工作 A,在 Hudson B 有工作 B。我想通过工作 B 触发工作 A。

【问题讨论】:

  • 任何知道答案的人请尽快回复,真的很紧急.....请帮助
  • 您缺乏计划或阅读并不构成我们的紧急情况。
  • 有没有想过哈德逊奴隶?或者你真的需要两个独立的 Hudson 服务器?

标签: continuous-integration hudson


【解决方案1】:

我正在使用 wget 来触发构建:

wget --post-data 'it-just-need-to-be-a-POST-request' 
--auth-no-challenge --http-user=myuser --http-password=mypassword
http://jenkins.xx.xx/xxx/job/A/build?delay=0sec

还有其他方法可以触发构建,请参阅 REST 和 jenkins 的其他 API。 但这在 unix 上效果很好。

【讨论】:

    【解决方案2】:

    就个人而言,我发现最简单的方法是查看构建时间戳: PROJECT_NAME/lastSuccessfulBuild/buildTimestamp

    【讨论】:

      【解决方案3】:

      在最新版本的 Hudson 中,lastSuccessfultBuild/ HTML 页面将包含自构建以来经过的时间,每次调用都会有所不同。这会导致 URL 更改触发器旋转。

      一种解决方法是使用 xml、json 或 python API 仅请求信息的子集。使用“tree”请求参数,以下 URL 将返回一个 XML 文档,其中仅包含上次成功构建的构建号。

      http://SERVER:PORT/job/JOBNAME/lastSuccessfulBuild/api/xml?tree=number

      使用此 URL 恢复了我对 URL 更改触发器的预期行为。

      【讨论】:

        【解决方案4】:

        在您的作业 B 配置中,选中 Trigger builds remote (e.g., from scripts) 复选框并提供令牌。

        那里的帮助文本显示了您可以调用的 URL,以从远程脚本(例如,从 Hudson 作业 A 中的 shell 脚本)触发构建。

        但是,无论作业 A 的结果如何,这都会触发作业 B。
        Morechilli 的答案可能是最好的解决方案。

        【讨论】:

        • 当作业的一个步骤失败时,Hudson 不会执行以下步骤。因此,当您调用远程作业是最后一步时,它只会在上一步成功的情况下执行。
        【解决方案5】:

        我没有使用过 Hudson,但我猜您最简单的方法是使用 URL 触发器:

        http://wiki.hudson-ci.org/display/HUDSON/URL+Change+Trigger

        我认为有一个最新的构建 url 可以用于此。

        【讨论】:

        • 我认为最后一个成功的 URL SERVER:PORT/job/JOBNAME/lastSuccessfulBuild 应该与 URL 更改触发器一起使用,如果您只想在作业 A 成功时触发作业 B。如果应始终触发作业 B,请尝试上次构建 URLhttp://SERVER:PORT/job/JOBNAME/lastBuild/
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        相关资源
        最近更新 更多