2017-01-26 23 views
3

Ich schreibe Pipeline-Skript, um kontinuierliche Integration in unserem Projekt zu implementieren. Der Prozess besteht darin, dass Benutzer in einem bestimmten Zweig arbeiten, der der Namenskonvention test_id1, test_id2 usw. folgt. Sobald diese in den Remote-Repo-Modus versetzt werden, startet Jenkins, testet den Zweig mit test * und erledigt den Build-Prozess.Jenkins Pipeline - Git Zweig

Basierend auf meinem ersten Instinkt, schrieb ich das Pipeline-Skript wie folgt: Stufe 'bauen'

node { 
    git url: '[email protected]:testing', branch: test* 
    sh "pwd" 
    sh "cat simple.csh" 
    sh "echo $PATH" 
    sh "csh simple.csh" 
    echo("end of pipeline") 
} 

Btw, ich habe "test *" versucht, 'test *'.

Jenkins bürgt mit dem folgenden Fehler aus:

Caused by: hudson.plugins.git.GitException: Command "git checkout -b test* 264dc398372cba41c026568bd764d2656ebfc511" returned status code 128: 

Also, die Frage ist, ob ich in der richtigen Richtung mit dieser gehe. Ich schaute auch auf den Fehler oben und offensichtlich, git Kasse mit einem Platzhalter ist etwas, das nicht den Zweck erfüllen würde. So würde der folgende Ansatz Arbeit:

1) Kasse git Master wie gewohnt 2) Überprüfen Sie, ob neue Niederlassung mit dem Namen Test * existiert 3) Ist dies der Fall, den Zweig Kasse und dann tun Rest des Builds

einige Anweisungen hierzu finden Sie benötigen ...

+2

Probieren Sie den 'checkout'-Schritt der Pipeline aus und verwenden Sie' '' 'als Zweigname (der Doppelpunkt ist hier wichtig, um jenkins wissen zu lassen, dass Sie eine Regex verwenden!). Überprüfen Sie den Snippet-Generator in Ihrer Jenkins-Instanz - er kann Ihnen bei der Syntax des Schritts helfen – fishi

Antwort

1

Sie können mit regulären Ausdrücken SCM Kasse Plugin verwenden. Ich habe die Feature-Zweige mit dem Format Feature/US1234 abgefragt. Ändern Sie wie Sie brauchen.

checkout([$class: 'GitSCM', 
branches: [[name: ':^(?i)origin/feature/[a-z|A-Z]{2}[0-9].*']], 
doGenerateSubmoduleConfigurations: false, 
extensions: [[$class: 'WipeWorkspace'], 
[$class: 'LocalBranch', localBranch: '**']], submoduleCfg: [], 
userRemoteConfigs: [[credentialsId: 'YOURID', url: 'GITURL']]]) 

Verwenden Sie den Pipeline-Syntaxgenerator für weitere Optionen.