首页 > 解决方案 > 如何在 Jenkins 上从 SVN 进行稀疏结帐和更新?

问题描述

我们有一个大型 SVN 存储库,我想对 Jenkins 进行稀疏检查。我确实理解稀疏结帐的概念,并且在本地拥有它,我可以让事情按照我的意愿工作。然而,在 Jenkins 上做事并反复运行它我无法开始工作。

我有一个回购结构如下

trunk\file.txt
trunk\FolderA
trunk\FolderB
trunk\FolderC
trunk\FolderD

我想结帐和更新

trunk\file.txt
trunk\FolderA
trunk\FolderB

不是

trunk\FolderC
trunk\FolderD

我的管道代码如下

checkout([$class: 'SubversionSCM', 
    additionalCredentials: [[credentialsId: strCredentialsId, realm: strRealm]],
    excludedCommitMessages: '', 
    excludedRegions: '', 
    excludedRevprop: '', 
    excludedUsers: '', filterChangelog: false, 
    ignoreDirPropChanges: false, 
    includedRegions: '', 
    locations: [
        [
            remote: "${strRepoPath}/trunk",
            local: "${softwarePath}", 
            depthOption: 'unknown', 
            credentialsId: strCredentialsId,
            cancelProcessOnExternalsFail: true, 
            ignoreExternalsOption: false
        ],
        [
            remote: "${strRepoPath}/trunk/FolderA",
            local: "${softwarePath}/FolderA", 
            depthOption: 'infinity', 
            credentialsId: strCredentialsId, 
            cancelProcessOnExternalsFail: true, 
            ignoreExternalsOption: false
        ],
        [
            remote: "${strRepoPath}/trunk/FolderB",
            local: "${softwarePath}/FolderB", 
            depthOption: 'infinity', 
            credentialsId: strCredentialsId, 
            cancelProcessOnExternalsFail: true, 
            ignoreExternalsOption: false
        ]
    ],
    quietOperation: false, 
    workspaceUpdater: [$class: 'UpdateWithCleanUpdater']])

每当我第一次运行此代码时,一切看起来都符合预期。但是,当 Jenkins 在以下时间运行它时,UpdateWithCleanUpdater会导致 FolderA 和 FolderB 首先被删除,然后再次检出。结果仍然是正确的,但是,我希望它花费的时间比必要的时间长得多。

我想保留UpdateWithCleanUpdater因为我希望 Jenkins 清理上一次运行中生成的文件。

有没有使用 Jenkins SVN 插件的解决方案?我将如何“手动”执行此操作,即第一次结帐,清理并仅更新以下时间,并且仍然根据 SVN 存储库上的更改检测自动运行 Jenkins?

提前致谢!

标签: jenkinssvnjenkins-pipelinesparse-checkout

解决方案


现在是一个非常狭窄的问题。我会说,要么用手动脚本替换UpdateWithCleanUpdater(通过调用本地 svn 客户端;这里有一些示例);或者你可以分叉或贡献于 Jenkins SVN 插件


推荐阅读