Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:cicd:learningunits:lu11:b [2026/05/12 01:49] – apeter | de:modul:ffit:3-jahr:cicd:learningunits:lu11:b [2026/05/12 02:10] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== LU11b - Jenkinsfile | + | ====== LU11b - Lokales |
| - | Multibranch-Pipeline | + | |
| - | ==== Jenkins-Multibranch-Pipeline | + | Bei der bisherigen Pipeline haben wir der Einfachheit halber das Pipeline-Script direkt auf dem Jenkins-Server hinterlegt. Das ist zwar schneller, um " |
| + | |||
| + | Gewisse Variablen wie " | ||
| + | |||
| + | Bei SonarQube kann die kostenlose Community-Edition keine Multibranch-Analyse erstellen, dafür wäre die Developer-Edition nötig. Für unseren Fall reicht es jedoch aus, wenn nur der Entwicklungs-Branch analysiert wird. Damit die anderen Branches nicht aus Versehen dazwischenfunken, | ||
| + | |||
| + | <code groovy> | ||
| + | when { | ||
| + | branch ' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Diese kann auch verwendet werden, um die Branches einzuschränken, | ||
| + | <code groovy> | ||
| + | when { | ||
| + | anyOf { | ||
| + | branch ' | ||
| + | branch ' | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Ein Jenkinsfile (ohne Backend) könnte folgendermassen aussehen: | ||
| + | |||
| + | <code groovy> | ||
| + | agent any | ||
| + | |||
| + | options { | ||
| + | disableConcurrentBuilds() | ||
| + | timeout(time: | ||
| + | } | ||
| + | |||
| + | environment { | ||
| + | PROJECT_NAME | ||
| + | TARGET_DIR | ||
| + | SONAR_SCANNER_OPTS | ||
| + | } | ||
| + | |||
| + | stages { | ||
| + | stage(' | ||
| + | steps { | ||
| + | checkout scm | ||
| + | } | ||
| + | } | ||
| + | |||
| + | stage(' | ||
| + | steps { | ||
| + | dir(' | ||
| + | sh ''' | ||
| + | npm ci ... | ||
| + | npm run build | ||
| + | ''' | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | stage(' | ||
| + | when { | ||
| + | branch ' | ||
| + | } | ||
| + | steps { | ||
| + | sh """ | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | """ | ||
| + | script { | ||
| + | def scannerHome | ||
| + | withSonarQubeEnv(' | ||
| + | sh """ | ||
| + | ${scannerHome}/ | ||
| + | -Dsonar.projectKey=${PROJECT_NAME} \ | ||
| + | -Dsonar.branch.name=${BRANCH_NAME} | ||
| + | """ | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | stage(' | ||
| + | when { | ||
| + | anyOf { | ||
| + | branch ' | ||
| + | branch ' | ||
| + | } | ||
| + | } | ||
| + | steps { | ||
| + | sh ''' | ||
| + | echo " | ||
| + | |||
| + | mkdir -p " | ||
| + | rm -rf " | ||
| + | |||
| + | cp -r frontend/ | ||
| + | ''' | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | post { | ||
| + | always { | ||
| + | deleteDir() | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | Sie finden dieses Beispiel auch in folgendem Repository: https:// | ||