Jenkins svn 导出构建步骤
Jenkins svn export build step
在我的 Jenkins 服务器上,我有一个项目从 SVN 中检出一些源代码,运行s 一个名为 MakeInstaller 的构建脚本。ps1 与源代码一起被检出。它非常简单明了,这部分效果很好。
运行不佳的是 MakeInstaller 的那一部分。ps1 尝试对某些其他源代码的特定修订进行 svn 导出,但它没有连接到 SVN 的凭据。当我 运行 在我的 PC 上构建脚本时,这完全没问题,因为 Tortoise SVN 缓存了凭据。
Jenkins 已经有了我的 SVN 凭据,但这仅在 Jenkins 签出源代码时使用,而不是在我的构建脚本尝试签出源代码时使用。
我试过:
- 在 运行ning Jenkins 的机器上安装 Tortoise SVN 命令行工具。这修复了我最初的 "svn.exe not found" 错误,但它无法知道我对此服务器的凭据
- 我什至在该机器上使用 Tortoise SVN 登录到 SVN 服务器,试图让它缓存凭据,但它仍然无法正常工作。我猜这是因为 Jenkins 服务没有 运行 在我登录的同一用户下。
不过我觉得我走错了路。将 Tortoise SVN 安装在该机器上以及 Jenkins SVN 插件已经使用的任何 SVN 客户端似乎有点奇怪。
我的问题:有没有一种方法可以从 Jenkins 的构建脚本内部导出 SVN 并让它使用 Jenkins 已经知道的凭据?我可以使用与 Jenkins SVN 插件相同的 svn.exe 吗?我真的不想在构建脚本本身中包含凭据。
我发现的大多数类似问题都涉及由于凭据错误导致的初始签出失败,而不是作为构建脚本的一部分发生的签出。
最后,我做了类似Jenkins: Access global passwords in powershell
的事情
我不得不使用 EnvInject,因为当我尝试保存项目时,Credentials Binding 插件给我一个错误。这涉及将我的 SVN 密码的另一个实例添加到 Jenkins,并将 Jenkins 用户名硬编码到我的构建脚本中,但它正在工作。
现在构建脚本尝试使用虚拟 svn info 命令进行身份验证。如果我是 运行 我本地机器上的脚本,它可以运行并且无需用户名或密码即可运行。如果虚拟 svn 信息命令失败,它会尝试使用 --username Jenkins 和 --password $env:svnpassword 登录,其中 svnpassword 环境变量由 EnvInject 提供。
在我的 Jenkins 服务器上,我有一个项目从 SVN 中检出一些源代码,运行s 一个名为 MakeInstaller 的构建脚本。ps1 与源代码一起被检出。它非常简单明了,这部分效果很好。
运行不佳的是 MakeInstaller 的那一部分。ps1 尝试对某些其他源代码的特定修订进行 svn 导出,但它没有连接到 SVN 的凭据。当我 运行 在我的 PC 上构建脚本时,这完全没问题,因为 Tortoise SVN 缓存了凭据。
Jenkins 已经有了我的 SVN 凭据,但这仅在 Jenkins 签出源代码时使用,而不是在我的构建脚本尝试签出源代码时使用。
我试过:
- 在 运行ning Jenkins 的机器上安装 Tortoise SVN 命令行工具。这修复了我最初的 "svn.exe not found" 错误,但它无法知道我对此服务器的凭据
- 我什至在该机器上使用 Tortoise SVN 登录到 SVN 服务器,试图让它缓存凭据,但它仍然无法正常工作。我猜这是因为 Jenkins 服务没有 运行 在我登录的同一用户下。
不过我觉得我走错了路。将 Tortoise SVN 安装在该机器上以及 Jenkins SVN 插件已经使用的任何 SVN 客户端似乎有点奇怪。
我的问题:有没有一种方法可以从 Jenkins 的构建脚本内部导出 SVN 并让它使用 Jenkins 已经知道的凭据?我可以使用与 Jenkins SVN 插件相同的 svn.exe 吗?我真的不想在构建脚本本身中包含凭据。
我发现的大多数类似问题都涉及由于凭据错误导致的初始签出失败,而不是作为构建脚本的一部分发生的签出。
最后,我做了类似Jenkins: Access global passwords in powershell
的事情我不得不使用 EnvInject,因为当我尝试保存项目时,Credentials Binding 插件给我一个错误。这涉及将我的 SVN 密码的另一个实例添加到 Jenkins,并将 Jenkins 用户名硬编码到我的构建脚本中,但它正在工作。
现在构建脚本尝试使用虚拟 svn info 命令进行身份验证。如果我是 运行 我本地机器上的脚本,它可以运行并且无需用户名或密码即可运行。如果虚拟 svn 信息命令失败,它会尝试使用 --username Jenkins 和 --password $env:svnpassword 登录,其中 svnpassword 环境变量由 EnvInject 提供。