【问题标题】:Hudson plugins for visual svn用于视觉 svn 的 Hudson 插件
【发布时间】:2010-06-16 18:32:35
【问题描述】:

问题

我在 windows server 2008 上设置了一个 hudson 构建服务器。我们希望能够提交到存储库,并且在提交成功后,我们希望可视 svn 服务器向 hudson 构建服务器发送消息或触发器以让它知道它需要执行构建。我们希望它仅在有人提交时才构建,因此我们不想不断轮询 svn,因为它没有必要。

问题

是否有一个 Visual svn 插件可以自动向 hudson 发送消息,或者有没有更好的方法可以在不使用 wget 的情况下做到这一点?我已经尝试在视觉 svn 服务器的 post commit 钩子中的 hudson 构建 url 上使用 wget,但我意识到 post commit 钩子只能为整个存储库设置,而不是视觉 svn 服务器中的单个项目,所以如果我们做了一个即使在与 hudosn 链接的项目中没有发生任何更改,它也会告诉 hudson 它需要构建存储库中的不同项目...

【问题讨论】:

    标签: svn hudson visualsvn


    【解决方案1】:

    让哈德森解决这个问题怎么样。 Hudson 可以轮询存储库(仅是您项目的 URL)以查明是否有更改并仅在检测到更改时构建。

    【讨论】:

    • 我知道什么可行,但我的团队不希望 hudson 每隔这么多分钟就轮询一次。
    • 所有轮询都是检查存储库修订号是否增加。 svn 服务器几乎不会注意到这个活动。另一方面,如果你在 svn 和 hudson 之间使用 post commit hook 创建依赖关系,例如当 hudson 没有响应时,你可以让你的 svn 服务器瘫痪。
    【解决方案2】:

    我同意@Peter_Schuetze,让 Hudson 弄清楚这一点。除非您真的发现问题,否则不值得优化。

    您可以使用push Hudson 的提交后挂钩,“然后,Hudson 将针对所有配置了轮询的作业检查 [更改],并相应地安排构建。”

    只能为整个存储库设置提交后挂钩,不能为单个项目设置

    没错。但是,如果您真的很担心,在提交后挂钩中,您可以在 ping Hudson 之前检查更改的目录,例如:

    changes=`svnlook dirs-changed -r $REV $REPO`
    case $changes in
       my_project/*)
         # ping Hudson
         ;;
    esac
    

    对我来说,让 post-commit 挂钩保持最新状态听起来工作量太大。

    【讨论】:

      【解决方案3】:

      如果您只想为某些项目触发构建,最有效的方法是将逻辑写入您的 svn post-commit 挂钩。这避免了不必要的轮询流量,并且仅在更改所需项目时才触发作业。下面的示例用于我们的 VisualSVN 服务器实例。

      set repos=%1
      set rev=%2
      
      FOR /F "tokens=*" %%k IN ('svnlook dirs-changed "%repos%" -r %rev% 2^>NUL') do (
        set Changed_Project=%%k
      )
      set Changed_Project=%Changed_Project:~9,9%
      if "%Changed_Project%" == "Project_A" goto Actions_For_Project_A
      
      :Actions_For_Project_A
      curl -X POST "http://JenkinsVM:8080/job/Job_Name/build?&token=TOKEN_NAME
      

      以上行假设 project 在 /branches/Project_A 下。对于不同的位置,您需要调整字符串的开始和长度值。它还假设 curl 在您设置的路径中,并且您已在 Jenkins 作业中创建了身份验证令牌

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 2010-11-30
        • 2010-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多