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:21] 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 157: | Zeile 191: | ||
* eigentlich alles wie in vorhergehendem Beispiel | * eigentlich alles wie in vorhergehendem Beispiel | ||
* $CI_DEFAULT_BRANCH -> Variable die den Namen des Default-Branches enthält (aber ohne " | * $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 ===== |