SVN结帐未获取最新版本

时间:2019-05-23 14:00:17

标签: jenkins svn jenkins-pipeline jenkins-declarative-pipeline

我们有Jenkins多分支管道工作。
这项工作受到限制,因此一次只能运行一个实例(包括branchestagstrunk),因为它们需要更新特定的文件{{1} },它们都共享。

问题是,当作业的多个实例排队时,它们不会签出revisions.db的最新版本

我找到了解决方法,首先检出存储库。然后手动转到该文件夹​​并调用revisions.db。然后我得到了最新版本。

我还尝试在Jenkinsfile的末尾添加一个睡眠计时器(在释放锁之前),以确保不是因为SVN服务器太慢。但这没有帮助。

我还尝试了在检出之前手动删除svn up文件夹。但这也不起作用。

我们故意不清除工作区。

这是Jenkinsfile的一个片段:

revision

结帐功能只是我们使用的包装器:

lock(resource: 'Entire_Build'){
          checkoutSVN(false, 'paramdb', "https://someserver/svn/param/${BRANCH_NAME}", 'UpdateWithCleanUpdater')
          checkoutSVN(false, 'revision', "https://someserver/svn/revisions/test/trunk", 'CheckoutUpdater')          
          sh '''
          cd revision
          svn up
          cd .. '''
          // ...
        }

Jenkins文件在运行时会产生以下输出:


def checkoutSVN(Boolean ignoreExternalsOption, String local, String remote, String updater) {
    checkout([$class: 'SubversionSCM', 
        additionalCredentials: 
        [[credentialsId: 'someID', 
        realm: '<https://someserver/> CollabNet Subversion Repository']],
        excludedCommitMessages: '', 
        excludedRegions: '', 
        excludedRevprop: '', 
        excludedUsers: '', 
        filterChangelog: false, 
        ignoreDirPropChanges: false, 
        includedRegions: '', 
        locations: [[credentialsId: 'someID', 
        depthOption: 'infinity', 
        ignoreExternalsOption: ignoreExternalsOption, 
        local: local, 
        remote: remote]], 
        quietOperation: false,
        workspaceUpdater: [$class: updater]])
}

您可以清楚地看到,签出是针对修订版15:13:58 Checking out https://someserver/svn/revisions/test/trunk at revision '2019-05-23T15:13:49.973 +0200' 15:13:59 A revisions.db 15:13:59 At revision 8511 15:14:04 + cd revision 15:14:04 + svn up 15:14:04 Updating '.': 15:14:04 At revision 8512. 的,但是在调用8511时,我们会得到修订版svn up

为什么会这样?我希望结帐是最新版本。尤其是在与8512

一起调用时

0 个答案:

没有答案