【问题标题】:Jenkins is checking out the entire SVN repo twiceJenkins 两次检查整个 SVN 存储库
【发布时间】:2017-10-19 14:08:35
【问题描述】:

我有一个 Jenkins 流水线设置和一个 Jenkins 文件,其中包含以下内容:

 pipeline {
    agent any 

    stages {

        stage('Build') { 
            steps {
                echo 'Hey'
            } 
        }
    }  
}

提交后挂钩成功触发了 Jenkins 构建,我可以从 Jenkins UI 开始看到它。它声明它正在检查 repo 以从 Jenkins 文件中读取,并将检查结果存储在服务器上的 workspace@script 文件夹中。

Checking out svn https://<svn_server>/svn/Test/Core into C:\Program Files (x86)\Jenkins\jobs\CI_Build\workspace@script to read JenkinsPipeline/Jenkinsfile
Checking out a fresh workspace because C:\Program Files (x86)\Jenkins\jobs\CI_Build\workspace@script doesn't exist
Cleaning local Directory .

完成后,我对 repo 中的一个文件进行了更改,并通过 post commit hook 愉快地触发了构建,但随后它尝试再次将整个代码库检出到名为 workspace 的文件夹中。我本来希望结帐发生一次,然后“尽可能使用 SVN 更新”选项会启动并且只更新更改的文件?还是我的逻辑有误?

SVN 版本 - 1.9.7

Jenkins 版本 - 2.84

【问题讨论】:

    标签: jenkins svn jenkins-pipeline


    【解决方案1】:

    Jenkins 在知道是否应该检查您的代码之前,必须知道您的流水线脚本中有什么。您的管道可能会说不签出代码,然后您设置到子目录并自己启动签出。或者也许在不同的地方结帐多个回购。在 Jenkins 看到您的 Jenkinsfile 之前,它无法知道您想要什么。所以它必须检查一次 repo 才能看到你的管道,然后再做一次工作。

    使用 git(可能还有其他 repo 插件的某些版本)支持轻量级或稀疏检出,因此它只获取 jenkinsfile 而不是整个 repo。我不认为这是 SVN 中支持的选项。

    【讨论】:

    • 现在更有意义了。非常感谢。
    【解决方案2】:

    SVN 插件现在支持轻量级结账,SVN 插件已在 2.12.0 版中更新以添加此功能 - 请参阅 https://wiki.jenkins.io/display/JENKINS/Subversion+Plugin

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      相关资源
      最近更新 更多