Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
programmieren:gitlab [2022/01/10 19:02] root [Troubleshooting/Howto] |
programmieren:gitlab [2022/03/15 14:24] (aktuell) root [Troubleshooting/Howto] |
||
|---|---|---|---|
| Zeile 59: | Zeile 59: | ||
| - | <code> | + | <sxh yaml> |
| variables: | variables: | ||
| GIT_DEPTH: 0 | GIT_DEPTH: 0 | ||
| Zeile 69: | Zeile 69: | ||
| - static_analyses | - static_analyses | ||
| - | pylint: | + | pylint_commit: |
| stage: static_analyses | stage: static_analyses | ||
| before_script: | before_script: | ||
| Zeile 76: | Zeile 76: | ||
| script: | script: | ||
| - echo " | - echo " | ||
| + | - echo " | ||
| + | - last_ret=0 | ||
| + | - pythonfiles=$(git diff --name-only $CI_COMMIT_SHA $CI_COMMIT_BEFORE_SHA | grep -E ' | ||
| + | - > | ||
| + | if [[ $last_ret -eq 0 ]]; then echo " | ||
| + | --disable=import-error | ||
| + | phone_system_service_pb2_grpc.py, | ||
| + | settings_service_pb2_grpc.py, | ||
| + | files to lint"; fi | ||
| + | rules: | ||
| + | - if: $CI_PIPELINE_SOURCE == " | ||
| + | |||
| + | |||
| + | pylint_merge: | ||
| + | stage: static_analyses | ||
| + | before_script: | ||
| + | - echo " | ||
| + | - pip3 install pylint | ||
| + | script: | ||
| + | - echo " | ||
| + | - echo " | ||
| - last_ret=0 | - last_ret=0 | ||
| - pythonfiles=$(git diff --name-only origin/ | - pythonfiles=$(git diff --name-only origin/ | ||
| Zeile 84: | Zeile 105: | ||
| settings_service_pb2_grpc.py, | settings_service_pb2_grpc.py, | ||
| files to lint"; fi | files to lint"; fi | ||
| - | </code> | + | rules: |
| + | - if: $CI_PIPELINE_SOURCE == " | ||
| + | |||
| + | </sxh> | ||
| * Variables definiert globale Variablen | * Variables definiert globale Variablen | ||
| Zeile 100: | Zeile 124: | ||
| * bestehen aus mehreren Jobs | * bestehen aus mehreren Jobs | ||
| * Jobs können parallel verarbeitet werden | * Jobs können parallel verarbeitet werden | ||
| - | * pylint | + | * pylint_commit |
| * Jobs können beliebige Namen haben | * Jobs können beliebige Namen haben | ||
| * stage: Besagt von welchem Stage der Job ist | * stage: Besagt von welchem Stage der Job ist | ||
| Zeile 109: | Zeile 133: | ||
| * Liste | * Liste | ||
| * jeder Eintrag ist ein Shell-Befehl | * jeder Eintrag ist ein Shell-Befehl | ||
| + | * Variablen vorhergehender Befehle stehen in nachfolgenden Befehlen zur Verfügung | ||
| * wenn ein Befehl fehlschlägt (Return-Code != 0) schlägt der ganze Job fehl | * wenn ein Befehl fehlschlägt (Return-Code != 0) schlägt der ganze Job fehl | ||
| * es werden keine weiteren Stages ausgeführt | * es werden keine weiteren Stages ausgeführt | ||
| * es werden keine weiteren Befehle ausgeführt | * es werden keine weiteren Befehle ausgeführt | ||
| + | * rules -> Bedingungen unter denen der Job überhaupt ausgeführt wird | ||
| + | * if -> Definiert eine Bedingung | ||
| + | * Die Variable CI_PIPELINE_SOURCE definiert was die Pipeline ausgelöst hat | ||
| + | * u.a. relevant wenn Jobs für Merges ausgeführt werden sollen -> das ist normalerweise nicht der Fall, sondern nur bei Commits | ||
| + | * " | ||
| + | * " | ||
| + | * pylint_merge -> ein weiterer Job | ||
| + | * dieser wird nur für Merge-Requests ausgeführt -> siehe rules-Sektion | ||
| + | * ansonsten ist es weitestgehend gleich zur vorhergehenden Job-Sektion | ||
| Zeile 149: | Zeile 183: | ||
| * das grep dient hier nur dazu die Detailliste weiter zu filtern | * das grep dient hier nur dazu die Detailliste weiter zu filtern | ||
| * " | * " | ||
| + | \\ \\ | ||
| + | Das Gleiche noch mal für die Dateiliste im Vergleich zum Master-Branch (sinnvoll wenn man beim Merge-Request, | ||
| + | <sxh yaml> | ||
| + | script: | ||
| + | - pythonfiles=$(git diff --name-only origin/ | ||
| + | |||
| + | * eigentlich alles wie in vorhergehendem Beispiel | ||
| + | * $CI_DEFAULT_BRANCH -> Variable die den Namen des Default-Branches enthält (aber ohne " | ||
| + | </ | ||
| + | |Job nur ausführen wenn es ein merge-Request ist|Per Default laufen Jobs nur bei Commits, nicht vor Merge-Requests. \\ <sxh YAML> | ||
| + | pylint_commit: | ||
| + | | ||
| + | | ||
| + | - if: $CI_PIPELINE_SOURCE == " | ||
| + | |||
| + | pylint_merge: | ||
| + | | ||
| + | | ||
| + | - if: $CI_PIPELINE_SOURCE == " | ||
| + | </ | ||
| + | * In obigem Beispiel sind 2 Jobs definiert | ||
| + | * pylint_commit läuft nur für Commits (" | ||
| + | * pylint_merge läuft nur wenn es sich um einen Merge-Request handelt | ||
| + | * rules -> definieren Regeln die definieren wann ein Job ausgeführt wird | ||
| + | * if -> definiert eine Regel | ||
| + | * " | ||
| + | * " | ||
| + | * " | ||
| + | |||
| + | </ | ||
| + | |pylint integrieren| <sxh YAML> | ||
| + | - pylint --rcfile=.pylintrc $pythonfiles; | ||
| + | </ | ||
| + | * das Kommando wird im Root des Projektes (des git-Projektes) ausgeführt " | ||
| + | * man kann die .pylintrc also einfach ein- und auschecken wie jede andere Datei auch | ||
| + | * $pythonfiles ist die Liste von Dateien die gelinted werden sollen | ||
| </ | </ | ||
| ===== Auto DevOps ===== | ===== Auto DevOps ===== | ||