2017-10-19 147 views
0

我有詹金斯管道安装,并具有以下内容的詹金斯文件:詹金斯被检查出整个SVN回购两次

pipeline { 
    agent any 

    stages { 

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

赛后commit钩子触发詹金斯成功构建,我可以看到它从Jenkins UI开始。它声明它检出从Jenkins文件读取的回购,并将结帐存储在服务器上的[email protected]文件夹中。

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

上述过程完成后,我做的回购更改一个文件并生成通过后触发commit挂钩愉快,但随后再次尝试签出整个代码库到一个名为workspace文件夹。我本来会希望结账会发生一次,然后“尽可能多地使用SVN更新”选项会启动并仅更新已更改的文件?或者,也许我有错误的逻辑?

SVN版本 - 1.9.7

詹金斯版本 - 2.84

回答

1

詹金斯必须知道什么是你的管道脚本之前就知道它是否应该签你的代码。您的管道可能会说不检查代码,并将其设置为子目录并自行启动检出。或者可能在不同的地方结帐多个回购。在詹金斯看到你的詹金斯文件之前,它不知道你想要什么。所以它必须检查回购一次以查看您的管道,然后再次完成工作。

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

+0

现在更有意义了。非常感谢。 – mac