如何从Jenkins中的shell任务向SVN服务器进行身份验证?

时间:2017-02-19 02:46:10

标签: svn jenkins

我已经设置jenkins连接到SVN服务器以及我希望svn updatesvn commit的一项工作。

我在shell任务中执行此操作,但它失败了。当我打电话给:

svn update

我收到以下错误:

  

身份验证领域:http://svn...:80 Subversion存储库   'jenkins'的密码:身份验证领域:http://svn...:80   Subversion存储库用户名:svn:“http://svn ...”的选项:   授权失败:无法对服务器进行身份验证:已拒绝基本   挑战

我用谷歌搜索并查看了在线,但我试图纠正我的问题并没有成功。我宁愿不在命令行上传递--username--password,我认为应该至少有两种方法来设置它:

  • 使用'全局'Linux / SVN Jenkins用户缓存或类似的东西
  • 从Jenkins传递凭据

我没有尝试按照这两个选项的说明进行操作。

有人可以解释一下,即使像我这样的傻瓜也能理解 - 如何配置Jenkins和我的工作能够从一个连接的工作中的shell任务svn updatesvn commit到SVN。

修改 我被要求实现的是对某些不是构建的一部分文件运行某种处理 - 但是我们需要一个受控的“构建机器”来进行处理 - 而不仅仅是任何开发人员来进行处理和提交。

这是一个手动触发的作业,需要一些输入,进程,然后将生成的文件推送到svn。

(我不知道为什么会这样做 - 我被带来帮助修复他们的构建等等...)

2 个答案:

答案 0 :(得分:0)

您希望查看使用ssh身份验证,只要密钥存在,这将允许您避免传递用户名和密码。

可能值得一看为什么你要做一个svn up和svn commmit形成一个shell步骤。

我建议使用scm插件来获取源代码 - 只要你做svn up,jenkins就无法了解变更集。

提交也可能是另一种气味。如果没有标记,那么推向svn的构建可能会有更好的路径。对于其中一个 - 您将不得不使用触发构建的钩子,或者它将成为一个循环。

答案 1 :(得分:0)

我也面临着同样的问题,在从svn签出后运行.sh(以更新数据库脚本),我不知道是否必须通过命令行或其他方式传递用户。.

在我的情况下,我在.sh调用中添加了两个包含用户名和密码的附加参数,并使用了它们。.