5

Diese Frage ist im Grunde das gleiche wie this one außer ich benutze Subversion, und kein Plugin-Update hat den Trick für mich getan.Duplicate changelogs in jenkins pipeline script mit SVN

Ich lade mein Jenkinsfile-Skript mit einer Multibranch-Pipeline-Einstellung, und das Changelog wird bei jedem neuen dupliziert.

Da in meinem Build verwende ich mehrere Arbeitsbereiche, durch node innerhalb parallel Blöcke zugewiesen, ich rufe neue Checkouts für jede von ihnen, und die Changelog Verdoppelung wird ein bisschen nervig.

Antwort

5

Mit dem gleichen Problem konfrontiert.

Ich mache folgendes, bis ein Update für das SVN-Plug-in veröffentlicht wird.

Achtung: Sie müssen die Skriptaufrufe möglicherweise über die Seite "Inprozess-Skriptgenehmigung" genehmigen.

Dies löscht das Changelog aus dem Jenkins-Job. Das Changelog wird durch den Aufruf 'checkout scm' wieder gefüllt. UPDATE: Überprüfen Sie meine Bearbeitung unten. Diese „Lösung“ nicht funktioniert, weil fügt die entfernten Revisionen nach einem Neustart wieder ... ich komme nicht, warum, aber ...

EDIT:

OK jetzt fand ich einen neuen Weg:

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']] 
    } 

Sie sollten die Seite "Pipeline-Syntax" verwenden, um die Berechtigungsnachweise zu erhalten. Ich habe gerade versucht

checkout changelog: false, scm 

verwenden, aber das hat nicht funktioniert. Sie müssen also die oben gezeigte lange Version verwenden.

+0

Vielen Dank, dass Sie einen Workaround vorgeschlagen haben. Ich werde es versuchen, sobald ich aus den Ferien zur Arbeit komme. –

+0

Eine fiese Sache gefunden ... Wenn Jenkins neu gestartet wird, scheint es die Änderungsmengen neu zu erstellen und fügt die zuvor gelöschte zurück zum Build hinzu :( Gerade erst nach einem Update entdeckt und neu gestartet ... –

+0

ok ich fand einen neuen Arbeitsweg., Siehe oben –

3

Ben Herfurths Antwort ist gut, ich poste gerade meine letzte Anpassung dafür, weil ich versucht habe, es ein wenig in einer einzigen Arbeitsfunktion einzupacken.

Diese Funktion funktioniert für mich, da ich nur ein SVN-Repository zur Kasse haben, und alles andere (zB Passwörter) bereits konfiguriert wurden:

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

lasse ich nur einen Anruf zu dieser überall brauche ich eine frische Arbeitskopie.

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

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

Hoffe das hilft anderen.

3

Anstatt die SCM-Klasse neu definiert, kann man auf das ursprünglichen „scm“ Objekt verweist nach wie vor, und deaktivieren Sie das Changelog wie so:

checkout(changelog: false, scm: scm) 

Dies wird die beabsichtigten GERÄTEVERHALTEN von „Kasse scm“ beibehalten, während der Deaktivierung Changelog-Generierung.

+0

Funktioniert jetzt, danke :) Hat nicht funktioniert damals, als ich die Antwort schrieb. –