在Hudson中使用SVN凭据执行自定义SVN操作

5
我在这里想做的是使用 Hudson 存储的凭据执行某种 SVN 操作。 例如: 1. 启动项目 Foo 的构建 2. 项目 Foo 启动 shell 脚本 3. Shell 脚本使用在 Hudson 中设置的凭据为当前源代码打上标记 4. 构建继续进行
现在我知道有各种标记插件,但它们并不完全符合我的要求,因为标记取决于构建选项而不是构建成功。我可以很好地编写脚本,但在 Hudson 下运行时会出现问题,因为 svn 复制操作需要必要的凭据 - 因此需要访问 Hudson 已经用于检出项目的凭据。

奇怪。我有一个构建脚本可以完全做到这一点,而且我不需要做任何特殊的事情就可以从Hudson检出的工作目录运行svn命令。也许你是从工作区根目录而不是实际的工作目录运行副本? - Dave Bacher
@Dave Bacher:你的 SVN 服务器需要认证吗? - Arthur Ulfeldt
@Arthur Ulfeldt:是的,它可以(而且Hudson中存储的svn凭据具有读写访问权限)。 可能我作为运行Hudson进程的用户进行了一些初始配置,以便为hudson用户设置svn CLI命令 - 例如sudo -u hudson svn info $repo_url 并让svn存储凭据。 - Dave Bacher
2个回答

1

这篇文章提到脚本可以从文件系统中访问Hudson SVN凭据,因为它们以明文形式存储在文件中。该文章还涉及了其他问题,所以请小心处理。


看起来这是正确的方向 - 但我如何使用subversion.credentials文件本身? - cyborg
实际上它们并没有以明文保存,至少对我来说不是。但我记得很久以前它们没有被加密。但我认为修复补丁是在2008或2009年推出的。我不再记得了。 - Peter Schuetze
我引用的文章是在2010年10月写的,没有指明他们使用的Hudson的版本。 - Bernard
@Peter,密码可能只是base64编码。这就是我看到的。被模糊化了,但并没有加密。 - Dave Bacher
@Dave:不幸的是,你是对的。它只是base64编码。我本来希望使用更复杂的方法。但由于源代码是公开的,每个真正想要获取密码的人都可以利用它。 - Peter Schuetze

0

不要重复造轮子。看看Subversion标记插件。根据您对第3点的描述,此插件应该足够满足您的需求。


不,我不想在成功构建上打标签 - 这需要更多的工作。这是为了创建发布候选分支,需要用户发起并在成功构建时进行组合。还需要执行其他操作。 - cyborg
我认为您在重复使用Hudson存储的凭据方面运气不太好。但是,如果您使用Maven或至少有可用的Maven,则应该能够使用m2release插件。http://wiki.hudson-ci.org/display/HUDSON/M2+Release+Plugin - Peter Schuetze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接