Der Versuch, einen Workflow in Jenkins mit deklarative Pipeline zu erstellen, so etwas zu tun:Jenkins mehrfach verzweigten Job mit deklarative Pipeline Repo für jede Phase Klonen
- Kasse der Code auf 'Master'
- Build-Lösung auf ' Master '(Ich weiß, das ist kein sicherer Weg, aber Jenkins ist im Intranet, also sollte es für uns in Ordnung sein)
- Verstecke Artefakte (.dll, .exe, .pdb, etc) => 1. Stufe
- Artefakte auf Knoten entfernen, je nachdem, was benötigt wird (Komponententests an einem Slave, Integration te M. auf ein anderes und Selenium-Tests auf einem anderen ein) => 2. Stufe
- Run-Tests auf dem Slave abhängig => 3. parallel
Das Problem, das ich bin vor läuft Stadium, dass die git checkout (GitSCM) wird für jede Stufe ausgeführt.
Meine Pipeline sieht wie folgt aus:
pipeline {
agent {
label {
label "master"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
options {
timestamps()
}
stages {
stage("Build") {
agent {
label {
label "master"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
steps {
/*
steps to build the solution here
*/
//Sleep because stashing fails otherwise
script {
sleep(1)
}
dir("${env.WORKSPACE}\\UnitTests\\bin\\Release") {
stash name: 'unit-tests'
}
dir("${env.WORKSPACE}\\WebUnitTests\\bin\\x64\\Release") {
stash name: 'web-unit-tests'
}
}
stage('Export artefacts') {
agent {
label {
label "UnitTest"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
steps {
echo "Copying dlls from master to ${env.NODE_NAME}"
dir("${env.WORKSPACE}\\UnitTests\\bin\\Release") {
unstash 'unit-tests'
}
}
}
stage('Run tests') {
parallel {
stage("Run tests #1") {
agent {
label {
label "UnitTest"
customWorkspace "C:\\Jenkins\\workspace\\CustomWorkspace"
}
}
steps {
/*
run tests here
*/
}
post {
//post results here
}
}
//other parallel stages
}
}
}
}
So, wie bereits erwähnt, die GitSCM (Code Kasse) ist ein Teil von und für jede Phase durchgeführt: Build-Stufe