詹金斯两次检查整个SVN回购

时间:2017-10-19 14:08:36

标签: jenkins svn jenkins-pipeline

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

 pipeline {
    agent any 

    stages {

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

post commit hook成功触发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 .

完成此操作后,我通过post commit hook快速更改了repo中的文件和构建触发器,但随后它尝试将整个代码库再次签出到名为workspace的文件夹中。我原本预计结账会发生一次,然后“尽可能使用SVN更新”选项会启动并只更新已更改的文件?或许我的逻辑错误?

SVN版本 - 1.9.7

Jenkins版本 - 2.84

2 个答案:

答案 0 :(得分:1)

Jenkins在知道它是否应该检查你的代码之前必须知道你的管道脚本中有什么。您的管道可能不会检查代码,您可以设置为子目录并自行启动结帐。或者也许在不同的地方结账多个回购。在Jenkins看到你的Jenkins文件之前,它无法知道你想要什么。因此,它必须检查一次回购以查看您的管道,然后再次进行工作。

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

答案 1 :(得分:1)

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