svn 在詹金斯中从 ant 创建标签

svn create tag from ant in jenkins

我的 Jenkins 构建使用 Subversion 源代码管理。在 GUI 的相应字段中,我设置了存储库 url https://host:port/svn/project/trunk 并添加了凭据。

构建然后有许多步骤,每个步骤都是在 build.xml 上调用一个 ant 目标,它随 SVN 签出。

结帐本身工作正常,我可以通过查看工作区中的预期文件来验证这一点。因此凭据有效,Jenkins 可以连接到 SVN 服务器。

THEN 当其中一个构建步骤想要删除和创建 SVN 标签(文件将在下一步中复制到该标签 - 该标签由打包系统稍后):

16:54:17 04.svn-tagging:
16:54:17      [echo] svn delete tag https://host:port/svn/project/tags/tagname    
16:54:17      [exec] svn: E175013: Unable to connect to a repository at URL 'https://host:port/svn/project/tags/tagname'
16:54:17      [exec] svn: E175013: Access to 'https://host:port/svn/project/tags/tagname' forbidden
16:54:18      [exec] Result: 1
16:54:18      [echo] svn create tag https://host:port/svn/project/tags/tagname
16:54:18      [exec] svn: E175013: Unable to connect to a repository at URL 'https://host:port/svn/project/tags'
16:54:18      [exec] svn: E175013: Access to 'https://host:port/svn/project/tags' forbidden
16:54:19 

既然服务器已经可以连接到https://host:port/svn/project/trunk,为什么不能连接到https://host:port/svn/project/tags ?在 Additional Credentials(在 Subversion 下)我尝试为 https://host:[=39= 添加凭据]https://host:port/svn/project 但这并没有改变任何东西。

可能是 Jenkins 运行 的任何用户正在执行文字 svn 命令?我如何告诉 Jenkins 使用特定的凭据来完成此任务(以及如何在 Jenkins 中配置这些凭据)?

用于结帐的凭据不会传播到连续的构建步骤。这些是 运行 作为您的 Jenkins 设置的默认用户。在这种情况下,该用户无权访问该存储库。

如果您没有对 Jenkins 构建服务器的全局访问权限,似乎没有几个选项可用。我们的解决方案是(在作业配置中):

  1. 转到构建环境(这是一个header)
  2. 选中复选框屏蔽密码和正则表达式(并启用全局密码)
  3. 添加 Name/Password 对,例如名称 = svnpass & 密码 = ...
  4. 然后就可以使用ant-script${svnpass}
  5. 中的密码了
  6. 将 username/password 添加到 ant-calls,例如svn delete ... --username ... --password ${svnpass}