代码之家  ›  专栏  ›  技术社区  ›  Tim Long

SVN外部和自动构建

  •  4
  • Tim Long  · 技术社区  · 16 年前

    我有一个项目,它使用SVN外部语言来包含一些东西(实际上它是msbuild社区任务,但这是无关紧要的)。外部存储库需要用户名“客户”,但不需要密码。

    我已经设置了一个externals属性,当在本地执行SVN更新时,这非常有效。当我的TeamCity持续集成构建运行时,问题就出现了。TeamCity尝试签出源代码并在外部阻塞,因为它不知道用户名。

    我试过在TeamCity中将外部定义为单独的SVN根,但这不起作用,所以我认为这不是解决方案。

    那我该怎么做呢?如何让TeaMeTo知道它需要登录到外部的VPN回购?

    5 回复  |  直到 11 年前
        1
  •  4
  •   sam hocevar    13 年前

    如果不需要密码,只需要一个用户名,那么您可以在 servers 配置文件(在Windows上,它位于 %APPDATA%\Subversion\servers )

    指定服务器,然后设置“用户名”选项。例如:

    [groups]
    communitytasks = *.comunityserver.com
    
    [communitytasks]
    username = guest
    
        2
  •  2
  •   Lasse V. Karlsen    16 年前

    身份验证信息存储在运行程序的用户本地的配置文件中。或者至少,它可以配置为这样做。

    我敢打赌,TeamCity的代理程序运行的用户与您登录机器的用户不同。如果是这样,您应该尝试使用同一个用户登录到计算机,然后执行 svn checkout 到临时目录并填写用户名和密码。这将被缓存,因此当TeamCity在同一用户下运行SVN时,它应该重用该信息。

        3
  •  2
  •   KIR    16 年前

    TeamCity使用来自SVN客户端的缓存身份验证信息访问外部。除了从命令行客户端访问远程服务器、本地缓存凭据以及让TeamCity使用它们(在TeamCity SVN设置中有一个复选框,用于是否使用存储的SVN设置),没有其他方法指定外部身份验证信息。

        4
  •  1
  •   Animism Adam Waite    11 年前

    不特定于TeamCity,但如果需要指定签出 svn:externals 储存库:

    外部的 属性,不指定用户名:

    the_vendor_dir     svn+ssh://hostname/path/to/repo
    

    默认情况下,签出将使用当前用户的用户名。要使用其他用户名:

    ~/.subversion/config:
    [tunnels]
    ssh = $SVN_SSH ssh -ljdoe
    

    这将导致颠覆使用 jdoe 作为任何 svn+ssh 未指定用户名的隧道。

    而不是改变 Svn+SSH 在Subversion级别的隧道,您也可以在ssh级别更改它:

    ~/.ssh/config:
    Host svn.example.com
       User jdoe
    

    上面关于Stefan的回答 ~/.subversion/servers 不适合我,而且似乎不适合 username 该文件中没有记录设置。

        5
  •  0
  •   Phillip Jacobs    16 年前

    我从未使用过TeamCity,但使用过其他CI工具。

    而不是让TeamCity调查SVN回购的新版本。可能有一个提交后挂钩调用teamcity,但是在这样做之前,让它运行一个Ant脚本,SVN将本地目录更新到teamcity服务器。第一次签出到此目录时,您应该有机会设置Externals。

    推荐文章