Benutzer-Werkzeuge

Webseiten-Werkzeuge


programmieren:gitlab

Dies ist eine alte Version des Dokuments!


  • ssh-Keys anlegen
    • rechte obere Ecke auf eigenes Icon klicken
    • Preferences
    • „SSH Keys“
  • existierendes Repository hochladen

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/n1843/test1.git
git push -u origin --all
git push -u origin --tags

Entwicklungsablauf

  • entwickelt wird nicht auf dem Master-Branch
  • es wird auf Development-Branches gearbeitet
  • diese werden gepusht

git push --set-upstream origin <Branchname>

  • in dem Moment wird CI/CD ausgeführt
  • die tauchen dann in Branches auf und dort kann ein Merge-Request angefordert werden
  • die Merge-Requests tauchen dann in Merge requests auf

CI/CD

  • Sind die Regeln/Tools die bei bestimmten Ereignissen ausgeführt werden sollen
    • zum Beispiel bei Push um den Code zu verifizieren
    • oder zu bestimmten Zeiten um ein Release zu bauen

Bestandteile

  • Pipelines → oberster Container
  • Stages → die Stufen die abgearbeitet werden sollen
    • Stages werden nacheinander ausgeführt → Code prüfen, kompilieren, ausrollen
    • beinhalten Jobs
    • Jobs der gleichen Stage können parallel zueinander ausgeführt werden
  • Jobs → definieren was getan werden soll
    • Jobs werden durch Runner ausgeführt
  • Runner → Systeme die die Jobs entgegennehmen
    • genaugenommen ist es Software auf einem Host der die Aufträge entgegen nimmt
    • Runner starten zum Beispiel VMs oder Container auf denen dann die Executor laufen
  • Executor → Systeme die die Jobs ausführen
    • genaugenommen ist es wieder ein Softwareclient
    • der cloned das Repository
    • holt sich Artefakte
    • führt dann den eigentlich Job darauf aus

gitlab-ci.yaml

  • liegt im root des Repositories
  • definiert was nacheinander auszuführen ist (Stages)
    • können Verify-Prozesse sein
    • können Build-Prozesse sein
variables:
    GIT_DEPTH: 0         

default:
    image: snom/sina-portal:2

stages:
  - static_analyses

pylint:
    stage: static_analyses
    before_script:
        - echo "Installing pylint"
        - pip3 install pylint
    script:
        - echo "$CI_COMMIT_SHA"
        - last_ret=0
        - pythonfiles=$(git diff --name-only origin/$CI_DEFAULT_BRANCH... | grep -E '*.py$') || last_ret=$?
        - >
            if [[ $last_ret -eq 0 ]]; then echo "linting '$pythonfiles'"; pylint --max-line-length=120 --output-format=text
            --disable=import-error  --reports=n --ignore='sphinx_conf.py,common_types_pb2_grpc.py,common_types_pb.py,
            phone_system_service_pb2_grpc.py,phone_system_service_pb2.py,qa_service_pb2_grpc.py,qa_service_pb2.py,
            settings_service_pb2_grpc.py,settings_service_pb2.py' $pythonfiles; else echo "Skipped, no python 
            files to lint"; fi

Auto DevOps

  • funktioniert so lange kein Regel-File im Repository vorhanden ist
  • erkennt automatisch die Sprache des Projekts
  • baut den Code automatisch
  • scannt den Code automatisch entsprechend automatischer Regeln
  • testet die Anwendung
  • innerhalb des Repositories
  • Settings
  • CI/CD
  • Auto DevOps
  • „Default to Auto DevOps pipeline“ anklicken

Begriffe

Abkürzung Begriff Beschreibung
CIContinous IntegrationJedes Commit wird automatisch (mit Hilfe von Scripten und Tools) gebaut (oder teilweise gebaut) und getestet
CDContinous DeliveryAutomatisches Ausrollen der Software, allerdings wird es manuell ausgelöst
CDContinous DeploymentEs wird automatisch ausgerollt auf Produktivsysteme

Dinge die eingestellt werden sollten

  • generell die Dinge unter Settings
  • Settings → Merge Requests
    • Approval
      • wie viele Leute müssen approven damit ein Merge-Request durchgeht
    • Merge Method
      • ob ein Merge-Commit erstellt wird oder nicht
    • Squash commits when merging
      • ob die History des gemergten Branches als solche erhalten bleibt oder gesquast wird
    • Merge checks
      • Ob alle Pipelines erfolgreich durchlaufen worden sein müssen bevor gemerged werden kann → das wird man in der Regel wollen
      • Ob alle Diskussionen beantwortet sein müssen bevor gemerged werden kann
    • Merge suggestions
      • Für die Merge-Message vorgeschlagene Texte
  • Settings → Integrations
    • darüber kann man externe Plattformen/Dienste einbinden
      • zum Beispiel Jira als Issue-Tracker
    • eine Alternative dazu ist Webhooks
  • Settings → Repository
    • Protected branches → es macht in der Regel den Zugriff auf den Master-Branch zu beschränken/zu deaktivieren, so dass in Feature-Branches gearbeitet wird, die dann gemerged werden
  • Settings → CI/CD
    • Runners → erlaubt Runners festzulegen (auf externen Maschinen oder innerhalb von gitlab)
programmieren/gitlab.1641396930.txt.gz · Zuletzt geändert: 2022/01/05 16:35 von root