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:32] 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+
  
-Diesbezüglich können folgende Tabelle helfen.+Verwenden Sie bei Dockercontainern Kleinbuchstaben anstatt Grossbuchstaben. Vermeiden Sie zudem Leerzeichen.
  
-==== Multiline-Double-Quotation ====+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 innerhalb von <code bash>"""</code> werden durch Groovy interpretiert.+==== Restart Policy ====
  
-^ Variablen-Art ^ Schreibweise ^ Kommentar ^ +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 Umgebungwelche regelmässig runterund wieder hochfährt.
-| Jenkins/env var | <WRAP> +
-<code bash>sh """ +
-PUBLIC_URL=/projects/${PROJECT_NAME}/${BRANCH_NAME} \ +
-"""</code> +
-</WRAP> | ✅ Durch Groovy interpretiert | +
-| Jenkins/env var | <WRAP> +
-<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> +
-</WRAP> | ✅ Durch Groovy interpretiert | +
-| Echte Groovy-Variable | <WRAP> +
-<code bash>sh """ +
-$scannerHome/bin/sonar-scanner \ +
-"""</code> +
-</WRAP> | ✅ Durch Groovy interpretiert | +
-| Echte Shell-Variable | <WRAP> +
-<code bash>sh """ +
-if [ "\${TABLE_EXISTS}" = "" ]; then +
-"""</code> +
-</WRAP> | ⚠️ Dollar muss escaped werdendamit Shell anstatt Groovy interpretiert | +
-| Echte Shell-Variable | <WRAP> +
-<code bash>sh """ +
-if [ "\$TABLE_EXISTS" = "" ]; then +
-"""</code> +
-</WRAP> | ⚠️ Dollar muss escaped werden, damit Shell anstatt Groovy interpretiert |+
  
-==== Multiline-Single-Quotation ====+<code groovy>--restart unless-stopped</code>
  
-Variablen innerhalb von <code bash>'''</code> werden nicht durch Groovy interpretiert, sondern erst durch die Shell.+Ergänzen Sie bei Bedarf Ihre Jenkinsfiles.
  
-^ Variablen-Art ^ Schreibweise ^ Kommentar ^ +Ein Beispiel finden Sie unter: https://github.com/AlexanderPeter/cicd/blob/develop/Jenkinsfile
-| Jenkins/env var | <WRAP> +
-<code bash>sh ''' +
-PUBLIC_URL=/projects/${PROJECT_NAME}/${BRANCH_NAME} \ +
-'''</code> +
-</WRAP> | ✅ Durch Shell interpretiert | +
-| Jenkins/env var | <code bash>-e POSTGRES_USER=$DB_USER</code> | ✅ Durch Shell interpretiert | +
-| Echte Groovy-Variable | <code bash>${scannerHome}/bin/sonar-scanner \</code> | ❌ Funktioniert nicht | +
-| Echte Groovy-Variable | <code bash>$scannerHome/bin/sonar-scanner \</code> | ❌ Funktioniert nicht | +
-| Echte Shell-Variable | <code bash>if [ "${TABLE_EXISTS}" = "" ]; then</code> | ✅ Durch Shell interpretiert | +
-| Echte Shell-Variable | <code bash>if [ "$TABLE_EXISTS" = "" ]; then</code> | ✅ Durch Shell interpretiert |+
  
 +==== .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.1778985129.txt.gz
  • Zuletzt geändert: 2026/05/17 04:32
  • von apeter