【问题标题】:How do I authenticate to SVN server from a shell task in Jenkins?如何从 Jenkins 中的 shell 任务向 SVN 服务器进行身份验证?
【发布时间】:2017-02-19 02:46:09
【问题描述】:

我已将 jenkins 设置为连接到 SVN 服务器,并且我的工作之一是我想要 svn updatesvn commit

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

svn update

我收到以下错误:

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

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

  • 使用“全局”Linux/SVN Jenkins 用户缓存或类似的东西
  • 通过传递来自 Jenkins 的凭据

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

有人可以解释一下,即使像我这样的笨蛋也能理解 - 如何配置 Jenkins 和我的工作,以便能够从与 SVN 挂钩的工作中的 shell 任务中 svn updatesvn commit

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

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

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

【问题讨论】:

    标签: svn jenkins


    【解决方案1】:

    您需要考虑使用 ssh 身份验证,这将允许您避免传递用户名和密码 - 只要密钥存在。

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

    我建议使用 scm 插件来获取源代码 - 只要您执行 svn up jenkins 就无法知道变更集。

    提交也可能是另一种味道。没有标记,推送到 svn 的构建可能有更好的路径。一方面 - 你将不得不对触发你的构建的钩子感到满意,否则它将成为一个循环。

    【讨论】:

    • 我了解循环 - 这将只是一项手动工作,不会由 scm 触发。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      相关资源
      最近更新 更多