【问题标题】:Hudson doesn't checkout using symlinks when using SVN (Subversion)使用 SVN (Subversion) 时,Hudson 不使用符号链接结帐
【发布时间】:2010-08-05 18:23:52
【问题描述】:

问题在于,当 Hudson 签出文件时,它不使用符号链接。 svn13 和 svn14 插件我都试过了,都不管用。

【问题讨论】:

  • 小心存储库中的符号链接。我在 JIRA 中为 hudson 打开了一个 bug 票:issues.jenkins-ci.org/browse/JENKINS-9856 本质上,链接到您的签出目录之外的符号链接可能会导致在 Jenkins 清理工作区时删除文件/文件夹。
  • 在 1.30 中也解决了这个问题。

标签: svn hudson symlink svn-checkout


【解决方案1】:

在 linux 中,编辑您的 /etc/init.d/hudson 脚本文件:

查找如下所示的行:

$SU $HUDSON_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS  -jar $HUDSON_WAR $HUDSON_ARGS" || return 2

改成:

$SU $HUDSON_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS -Dsvnkit.symlinks=true -jar $HUDSON_WAR $HUDSON_ARGS" || return 2

保存文件并输入:

sudo /etc/init.d/hudson stop
sudo /etc/init.d/hudson start

总而言之,您实际上是希望传递 JAVA -Dsvnkit.symlinks=true 以便将符号链接解析为文件夹而不是文件。

【讨论】:

    【解决方案2】:

    在 CentOS 中,您应该更改的行是:

    JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"
    

    改成:

    JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -Dsvnkit.symlinks=true -jar $JENKINS_WAR"
    

    然后重启詹金斯

    【讨论】:

    • 感谢您发布分布之间的差异!
    【解决方案3】:

    我不确定您尝试过哪个版本的 subversion 插件,但从 subversion 插件 1.30 开始,它可以开箱即用。

    我猜 SVNKit 在某些时候会更改默认的符号链接,而 Jenkins 从中受益。

    【讨论】:

    • 嗯,想想看,当我在三月或五月将它安装在 Fedora 盒子上时,那时我不需要这样做。向那些使用最新版本的人指出,这样做已经不再必要了。
    • 我在 CentOS 上运行 jenkins 最新版本,如果不添加 svnkit.symlinks=true 选项,它仍然无法工作
    【解决方案4】:

    如果您想为每个从节点编辑此设置,这对我有用:

    来自 Jenkins 用户界面:

    1. 断开节点
    2. 点击从节点,在配置->高级->JVM选项下:
    3. 添加行:Dsvnkit.symlinks=true
    4. 重新启动从站

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多