我们有Jenkins多分支管道工作。
这项工作受到限制,因此一次只能运行一个实例(包括branches
,tags
,trunk
),因为它们需要更新特定的文件{{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