首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Jenkins上的SVN中进行稀疏签出和更新?

如何从Jenkins上的SVN中进行稀疏签出和更新?
EN

Stack Overflow用户
提问于 2019-05-06 08:39:09
回答 2查看 1.3K关注 0票数 4

我们有一个大型的SVN存储库,我想对Jenkins做一个稀疏的检查。我确实理解稀疏结帐的概念,并且在本地拥有它,我可以像我想要的那样工作。然而,在Jenkins身上做一些事情,并反复运行它,我就无法工作了。

我有一个回购结构如下

代码语言:javascript
复制
trunk\file.txt
trunk\FolderA
trunk\FolderB
trunk\FolderC
trunk\FolderD

我想退房和更新

代码语言:javascript
复制
trunk\file.txt
trunk\FolderA
trunk\FolderB

但不是

代码语言:javascript
复制
trunk\FolderC
trunk\FolderD

我的管道代码如下

代码语言:javascript
复制
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运行?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2019-05-06 08:54:00

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

票数 2
EN

Stack Overflow用户

发布于 2021-03-08 09:58:59

trunk上有:

代码语言:javascript
复制
depthOption: 'unknown',

值不应该是'empty'

然而,尽管这可能避免"FolderA和FolderB首先被删除,然后再签出“,所以我怀疑您是否真的会以这种方式获得”稀疏签出“。这将是一个“正常的签出到另一个SVN工作空间”。

作为解决办法,您可以考虑使用svn:externals:创建文件夹trunk/JenkinsWorkspace/trunk,并使用如下内容设置svn:externals属性:

代码语言:javascript
复制
 ^/trunk/FolderA FolderA
 ^/trunk/FolderB FolderB
 ^/trunk/file.txt file.txt

然后,在Jenkins中,您只需从${strRepoPath}/JenkinsWorkspace进行一次结账。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56001595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档