【问题标题】:How to correctly configure SVN for hudson (jenkins) continous integration system?如何为 hudson (jenkins) 持续集成系统正确配置 SVN?
【发布时间】:2011-03-14 11:50:16
【问题描述】:

我正在配置 jenkins 以在 MacOS 10.6.6 上构建我的 XCode 项目。为此,我安装了最新的 tomcat 容器和最新的 jenkins 作为 ROOT.war。除了添加 subversion 集成外,一切正常:(。在 jenkins 中创建一个新项目后,我在“源代码管理”中选择了“subversion”,并输入了我在命令行 subversion 工具中使用的存储库 URL:

https://svn.mydomain.local/main/project/trunk

不幸的是,它无法处理一个奇怪的错误“身份验证已取消”:

“详细信息”日志如下所示:

Unable to access https://svn.mydomain.local/main/project/trunk : svn: authentication cancelled 
org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
    at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getNextAuthentication(DefaultSVNAuthenticationManager.java:257)
    at hudson.scm.FilterSVNAuthenticationManager.getNextAuthentication(FilterSVNAuthenticationManager.java:39)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:552)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:275)
    at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:263)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:516)
    at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:98)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1001)
    at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.testConnection(DAVRepository.java:97)
    at hudson.scm.SubversionSCM$DescriptorImpl.checkRepositoryPath(SubversionSCM.java:1842)

最奇怪的是:如果我点击“输入凭据”并输入我的登录名和密码,Jenkins 会报告“身份验证成功。信息现在存储在 Hudson 中。”但它仍然是红色的“无法访问”并且构建时出现结帐错误:(。

命令行svn co 适用于用户和root 帐户,并缓存了所有凭据。也许任何对 macos 有 hudson 经验的人都可以给出一些提示?

【问题讨论】:

  • 这是一个 Jenkins 错误。请在Jenkins 8059查看并投票

标签: macos hudson jenkins


【解决方案1】:

只是为了检查基本设置,运行 tomcat/jenkins 的用户是否具有对 .hudson 目录及以下目录的写入权限,特别是对 hudson.scm.SubversionSCM.xml 的写入权限?

此外,someone else 已成功在 JAVA_ARGS 中设置 -Dsvnkit.http.methods=Basic,NTLM

【讨论】:

  • 令人印象深刻。在 catalina.sh 中将指定字符串添加到 JAVA_OPTS 即可解决问题!只是出于好奇-为什么詹金斯本身没有解决这样的问题?没有人通过 HTTPS 使用颠覆?
  • 这似乎是使用带有 NTLM 身份验证的 SVNKit 时的常见问题。 This 是我找到的唯一一个解释,虽然有点不满意。
【解决方案2】:

在 Hudson 配置 -> 管理插件 -> 高级选项卡 -> 确保您的 HTTP 代理配置正确设置。

【讨论】:

    【解决方案3】:

    我们只在一项作业上遇到了同样的问题,但在配置作业时,当提交后脚本尝试触发构建时:

    27 oct. 2011 17:57:45 hudson.scm.SubversionRepositoryStatus doNotifyCommit
    WARN: Failed to handle Subversion commit notification
    org.tmatesoft.svn.core.SVNCancelException: svn: authentication cancelled
    [...]
    

    检查作业配置显示“包含区域”参数设置不正确: 主干/src/目录

    更正了这个参数: /trunk/src/目录

    让詹金斯不再有问题

    【讨论】:

      【解决方案4】:

      我发现了一个由遇到非常相似问题的人发布的博客 (blog.vinodsingh) 条目。他刚刚删除了.subversion 目录,就解决了问题。

      【讨论】:

      • 我也找到了这个博客条目。不幸的是,sudo rm -rf `sudo find / -name .subversion 2>/dev/null` 没有任何改变 :(.
      • 它对我也不起作用。我不知道如何解决这个问题。还有其他建议吗?
      • 您需要在删除 .subversion 文件夹后执行额外的步骤,即在本地签出 repo,以便 Jenkins 可以加载 svn 缓存的凭据。您可以在我对类似问题的回答中看到更好的解释stackoverflow.com/questions/17464993/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2010-09-06
      相关资源
      最近更新 更多