Jenkins 两次检查整个 SVN 仓库

Jenkins is checking out the entire SVN repo twice

我有一个 Jenkins 管道设置,以及一个包含以下内容的 Jenkins 文件:

 pipeline {
    agent any 

    stages {

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

一个post提交钩子成功触发了Jenkins构建,我可以从JenkinsUI开始看到它。它声明它正在签出要从 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 提交挂钩愉快地触发了构建,但随后它再次尝试将整个代码库检出到一个名为workspace。我本来希望结帐发生一次,然后 "use SVN update as much as possible" 选项会启动并只更新更改的文件?还是我逻辑有误?

SVN 版本 - 1.9.7

詹金斯版本 - 2.84

Jenkins 必须先知道您的管道脚本中有什么,然后才能知道是否应该检查您的代码。有可能您的管道说不检出代码,您设置到一个子目录中并自行触发检出。或者也许在不同的地方签出多个回购协议。在 Jenkins 看到您的 Jenkinsfile 之前,它无法知道您想要什么。因此它必须检查回购一次以查看您的管道,然后再次检查以完成工作。

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

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