我们有一个大型的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运行?
提前感谢!
发布于 2019-05-06 08:54:00
发布于 2021-03-08 09:58:59
在trunk上有:
depthOption: 'unknown',值不应该是'empty'吗
然而,尽管这可能避免"FolderA和FolderB首先被删除,然后再签出“,所以我怀疑您是否真的会以这种方式获得”稀疏签出“。这将是一个“正常的签出到另一个SVN工作空间”。
作为解决办法,您可以考虑使用svn:externals:创建文件夹trunk/JenkinsWorkspace/trunk,并使用如下内容设置svn:externals属性:
^/trunk/FolderA FolderA
^/trunk/FolderB FolderB
^/trunk/file.txt file.txt然后,在Jenkins中,您只需从${strRepoPath}/JenkinsWorkspace进行一次结账。
https://stackoverflow.com/questions/56001595
复制相似问题