使用SVN在jenkins管道脚本中重复更改日志

时间:2016-05-05 10:14:15

标签: svn jenkins jenkins-plugins jenkins-workflow jenkins-pipeline

这个问题与this one基本相同,只是我使用了subversion,没有插件更新为我做过这个技巧。

我正在使用multibranch管道设置加载我的Jenkinsfile脚本,并且每个新checkout scm的更改日志都会重复。

因为在我的构建中,我使用多个工作区,通过node块内的parallel分配,我为每个工作区调用了新的签出,并且更改日志复制正在变得越来越多有点烦人。

3 个答案:

答案 0 :(得分:6)

面对同样的问题。

我正在执行以下操作,直到释放SVN插件的修复程序。

currentBuild.getChangeSets().clear()
checkout scm

注意:您可能必须通过"进程内脚本批准"批准脚本调用。页。

这将清除Jenkins Job的更改日志。更改日志将由结帐scm'再次填写。呼叫。 更新:检查下面的编辑。这个"解决方案"不起作用,因为重新启动后添加了删除的修订版...我不明白为什么,但是......

编辑:

现在好了,我发现了一种新的方式:

for(i = 0; i < scm.getLocations().length; i++) {
        def location = scm.getLocations()[i]
        def svn_url = location.remote
        checkout changelog: false, poll: false, scm: [$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: '252ad9ab-2f39-46f5-a77a-6196d1679dee', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: svn_url]], workspaceUpdater: [$class: 'UpdateWithRevertUpdater']]
    }

你应该使用&#34; Pipeline Syntax&#34;页面以获取正确的凭据。 我尝试使用

checkout changelog: false, scm

但那并没有奏效。所以你必须使用上面显示的长版本。

答案 1 :(得分:4)

不是重新定义SCM类,而是仍然可以引用原始的“scm”对象并禁用更改日志,如下所示:

checkout(changelog: false, scm: scm)

这将保留“checkout scm”的预期行为,同时禁用更改日志生成。

答案 2 :(得分:3)

Ben Herfurth的答案很好,我会发布我最后的改编,因为我试图在一个工作函数中将它包装起来。

这个功能对我有用,因为我只有一个SVN存储库可以结账,其他一切(例如密码)已经配置好了:

def checkout(){
    def svnLocation = scm.locations[0]
    checkout(changelog: false, scm: [$class: 'SubversionSCM', locations: [svnLocation], workspaceUpdater: [$class: 'UpdateWithCleanUpdater']])  
}

我只是打电话到这个地方,我需要一份新的工作副本。

node('linux') {        
   checkout()
   // ... run ITs on linux ...
}

node('windows') {
   checkout() // doesn't duplicate changelog anymore
   // ... run ITs on windows ....
}

希望这有助于其他人。