Jenkins svn导出构建步骤

时间:2015-04-27 22:02:05

标签: authentication svn jenkins

在我的Jenkins服务器上,我有一个项目,它从SVN中检查一些源代码并运行一个名为MakeInstaller.ps1的构建脚本,该脚本与源代码一起检出。它很直接,这部分工作得很好。

MakeInstaller.ps1的一部分尝试对某些其他源代码的特定修订版进行svn导出,但是它没有连接到SVN的凭据。当我在我的PC上运行构建脚本时,这完全没问题,因为Tortoise SVN已经缓存了凭据。

Jenkins已经拥有我的SVN凭据,但仅在Jenkins检出源代码时使用,而不是在我的构建脚本尝试签出源代码时使用。

我试过了:

  1. 在运行Jenkins的计算机上安装Tortoise SVN命令行工具。这修复了我的初始"未找到的svn.exe"错误,但无法知道此服务器的凭据
  2. 我甚至在该机器上使用Tortoise SVN登录SVN服务器,试图让它来缓存凭据,但它仍无法正常工作。我猜它是因为Jenkins服务不在我登录的同一用户下运行。
  3. 我觉得我走错了路。在Jenkins SVN插件已经使用的任何SVN客户端上安装Tortoise SVN似乎有点奇怪。

    我的问题:有没有办法在Jenkins的构建脚本中进行SVN导出并让它使用Jenkins已经知道的凭据?我可以使用Jenkins SVN插件使用的相同svn.exe吗?我真的不想在构建脚本本身中包含凭据。

    我发现的大多数类似问题都涉及由于凭据错误导致的初始签出失败,而不是作为构建脚本的一部分发生的签出。

1 个答案:

答案 0 :(得分:1)

最后,我最终做了Jenkins: Access global passwords in powershell

之类的事情

我不得不使用EnvInject,因为当我尝试保存项目时,Credentials Binding插件给了我一个错误。这包括将我的SVN密码的另一个实例添加到Jenkins,并将Jenkins用户名硬编码到我的构建脚本中,但它正在工作。

现在构建脚本尝试使用dummy svn info命令进行身份验证。如果我在我的本地计算机上运行脚本,那么它可以工作,并且没有用户名或密码。如果dummy svn info命令失败,它将尝试使用--username Jenkins和--password $ env:svnpassword登录,其中svnpassword环境变量由EnvInject提供。