我正在将多分支管道与SVN一起使用。我目前不使用显式的checkout scm
命令,但使用的是声明式默认签出。我的问题是,这似乎只执行svn update
。但是,我想使用UpdateWithCleanUpdater
更新策略。
我已经看到here可以修改scm对象-但不能不授予进一步的权限:
import hudson.scm.subversion.UpdateWithCleanUpdater
scm.setWorkspaceUpdater(new UpdateWithCleanUpdater())
是否有一种简单的方法来仅配置更新程序,同时保留来自多分支配置的所有其他信息,并且必须再次手动设置分支,凭据,服务器等??
我尝试了checkout scm: [workspaceUpdater: [$class: 'UpdateWithCleanUpdater']]
,但这不起作用
答案 0 :(得分:0)
在声明式管道阶段,请确保选项包含:
options {
skipDefaultCheckout()
}
“步骤”部分以类似以下的脚本块开头:
script {
myScm = scm
myScm.setWorkspaceUpdater(new hudson.scm.subversion.UpdateWithRevertUpdater())
checkout myScm
}
有关用于Subversion的不同类型的工作空间更新程序的更多信息,请参见:https://javadoc.jenkins.io/plugin/subversion/hudson/scm/subversion/WorkspaceUpdater.html
是的,您可能需要在批准页面上批准一些脚本:
http://<myjenkins>/scriptApproval/
答案 1 :(得分:0)
Jenkins随附<jenkins-url>/pipeline-syntax
的内置生成器,例如http://localhost/pipeline-syntax
示例输出如下:
checkout(
[$class: 'SubversionSCM',
additionalCredentials: [], excludedCommitMessages: '',
excludedRegions: '', excludedRevprop: '', excludedUsers: '',
filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '',
locations: [[cancelProcessOnExternalsFail: true,
credentialsId: '********-********-*******',
depthOption: 'infinity', ignoreExternalsOption: true,
local: '.', remote: 'http://*****/*****/trunk']],
quietOperation: true,
workspaceUpdater: [$class: 'CheckoutUpdater']]
)
您可以在管道脚本中包含任意多的行,而远程URL会根据分支而变化。就我而言,我有两个存储库,在签出时需要彼此相邻放置,因此我的脚本中有两个checkout
命令。
注意:“总是新鲜的”使用CheckoutUpdater类,而“更新之前还原”使用UpdateWithRevertUpdater。生成的输出可用于声明性和脚本化管道语法。