Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:modul:ffit:3-jahr:cicd:learningunits:lu13:a [2026/05/17 04:47] apeterde:modul:ffit:3-jahr:cicd:learningunits:lu13:a [2026/05/26 00:53] (aktuell) apeter
Zeile 1: Zeile 1:
-====== LU13a - Variabeln im Jenkinsfile ======+====== LU13a - Best Practices bei Docker ======
  
-Die Verwendung von Variablen in Jenkinsfile ist manchmal nicht intuitiv, weil zwei unterschiedliche Interpreter im Spiel sind +==== Naming ====
-  - **Groovy/Jenkins**: Interpretiert Env-Variablen und echte Groovy-Variablen +
-  - **Shell/Bash**: Interpretiert Env-Variablen und echte Shell-Variablen+
  
-Dabei spielen die gewählten Anführungszeichen eine entscheidende Rolle  +Verwenden Sie bei Dockercontainern Kleinbuchstaben anstatt GrossbuchstabenVermeiden Sie zudem Leerzeichen.
-  * Variablen innerhalb von Double-Quotations werden durch Groovy interpretiert. +
-  * Variablen innerhalb von Single-Quotations werden nicht durch Groovy interpretiert, sondern erst durch die Shell.+
  
-Diesbezüglich kann folgende Tabelle helfen.+Bei Nichteinhaltung dieses Naming-Richtlinie kann es zu folgendem Fehler kommen: 
 +<code log> 
 +invalid argument "cicd_develop_Backend" for "-t, --tag" flag: invalid reference format: repository name (library/cicd_develop_Backend) must be lowercase 
 +</code>
  
-^ Variablen-Art ^ Schreibweise ^ Kommentar ^ +==== Restart Policy ====
-| Jenkins/env var | <WRAP> +
-<code bash>sh """ +
-PUBLIC_URL=/projects/${PROJECT_NAME}/${BRANCH_NAME} \ +
-"""</code> +
-<code bash>sh """ +
--e POSTGRES_USER=$DB_USER +
-"""</code>  +
-</WRAP> | ✅ Durch Groovy interpretiert | +
-| Echte Groovy-Variable | <WRAP> +
-<code bash>sh """ +
-${scannerHome}/bin/sonar-scanner \ +
-"""</code> +
-<code bash>sh """ +
-$scannerHome/bin/sonar-scanner \ +
-"""</code> +
-</WRAP> | ✅ Durch Groovy interpretiert | +
-| Echte Shell-Variable | <WRAP> +
-<code bash>sh """ +
-if [ "\${TABLE_EXISTS}" "" ]; then +
-"""</code> +
-<code bash>sh """ +
-if [ "\$TABLE_EXISTS" "" ]; then +
-"""</code> +
-</WRAP> | ⚠️ Dollar muss escaped werden, damit Shell anstatt Groovy interpretiert | +
-| Jenkins/env var | <WRAP> +
-<code bash>sh ''' +
-PUBLIC_URL=/projects/${PROJECT_NAME}/${BRANCH_NAME} \ +
-'''</code> +
-<code bash>sh ''' +
--e POSTGRES_USER=$DB_USER +
-'''</code> +
-</WRAP> | ✅ Durch Shell interpretiert | +
-| Echte Groovy-Variable | <WRAP> +
-<code bash>sh ''' +
-${scannerHome}/bin/sonar-scanner \ +
-'''</code> +
-<code bash>sh ''' +
-$scannerHome/bin/sonar-scanner \ +
-'''</code> +
-</WRAP> | ❌ Funktioniert nicht | +
-| Echte Shell-Variable | <WRAP> +
-<code bash>sh ''' +
-if [ "${TABLE_EXISTS}" "" ]; then +
-'''</code> +
-<code bash>sh ''' +
-if [ "$TABLE_EXISTS" "" ]; then +
-'''</code> +
-</WRAP> | ✅ Durch Shell interpretiert |+
  
 +Das folgende Argument sorgt dafür, dass der Docker-Container nach einem Server-Restart automatisch wieder gestartet wird. Dies ist daher äusserst empfohlen bei einer Umgebung, welche regelmässig runter- und wieder hochfährt.
  
 +<code groovy>--restart unless-stopped</code>
 +
 +Ergänzen Sie bei Bedarf Ihre Jenkinsfiles.
 +
 +Ein Beispiel finden Sie unter: https://github.com/AlexanderPeter/cicd/blob/develop/Jenkinsfile
 +
 +==== .dockerignore ====
 +
 +Verwenden Sie bei jeder ''Dockerfile''-Datei auch eine dazugehörige ''.dockerignore''-Datei im gleichen Verzeichnis. Dadurch werden nicht unnötige Dateien in den Container kopiert und letzteres wird entsprechend nicht unnötig aufgebläht.
 +
 +<code .dockerignore>
 +.git
 +.gitignore
 +.env
 +.env.*
 +__pycache__/
 +*.pyc
 +venv/
 +.venv/
 +.idea/
 +.vscode/
 +tests/
 +coverage/
 +*.log
 +Dockerfile
 +docker-compose.yml
 +</code>
 +
 +Fügen Sie für jede ''Dockerfile''-Datei eine entsprechende ''.dockerignore''-Datei hinzu.
 +
 +Ein Beispiel finden Sie auf: https://github.com/AlexanderPeter/cicd/blob/develop/backend/.dockerignore
  
  • de/modul/ffit/3-jahr/cicd/learningunits/lu13/a.1778986077.txt.gz
  • Zuletzt geändert: 2026/05/17 04:47
  • von apeter