David Schirrmeister 28467e6771 update
2025-05-19 12:46:39 +02:00

2.3 KiB

Continuous Development

Configuration Management

Version Control System (VCS)

  • Erlauben mehrere Versionen von Dateien
    • Falls etwas bearbeitet wurde, sieht man, wie es vorher aussah
  • Erlaubt dem Team zusammenzuarbeiten
    • auch wenn verteilt

Good Practices VC

  • Absolut alles im VCS speichern
    • Tests, Datenbankscripte, Buildscripte, Dokumentationen, etc.
    • Alle Informationen, die benötigt werden, um irgendwelche Test- / Produktionsumgebungen wiederherzustellen

VC - Release Versioning

  • Jeder Release sollte eine eigene Nummer haben

Versionsschema

  • SemVer (Semantic Versioning)
    • MAJOR.Minor.patch
    • Major
      • Bahnbrechende Änderungen (Hohes Risiko)
        • inkompatible API Änderungen
        • Entfernen von Features
        • Änderungen am Datenbankschema, die Daten entfernen
    • Minor Version
      • Features (Mittleres Risiko)
        • neues Feature
        • UI ändern
        • DB-Schema erweitern (keine Daten entfernen)
    • patch version
      • Alle anderen Änderungen (kaum Risiko)
        • kleinere Bug-Fixes
    • Zusätzliche Labels
      • alpha
      • beta
      • bspw:
        • 1.0.0-alpha.1
  • image_843.png
  • image_844.png

VC - Meaningful Commits

<type>[optional scope]: <description>
[optional body]
[optional footer(a)]

Commit Types

  • chore
    • bspw. Abhängigkeiten updaten
  • refactor
  • docs
  • style
    • Formatieren, fehlende Semikolons, ...
  • test
  • perf
    • Performance Verbesserungen
  • ci
    • CI/CD related
  • build
    • Änderungen, die das Build-System oder externe Abhängigkeiten betreffen
  • revert
    • Rückgängig machen

VC - Branching

  • Vermeide lange Branches
  • Überprüfe regelmäßig die Main-Line

VC - Branching GitFlow

  • image_845.png
  • Development Branch (develop)
    • master/main für produktionsfertigen Code
    • develop für letzte Development Änderungen
  • Feature Branch (feature/*)
    • für neue Features
    • existiert nur so lange, wie das Feature entwickelt wird
  • Hotfix Branch (hotfix/*)
    • Wie ein Release-Branch, aber für unerwartete, kurzfristige Releases

Probleme:

  • Hotfix / Release Branch
    • macht die Sache deutlich (teilweise unnötig) komplizierter
  • Devs machen häufig Fehler
    • direkt auf main mergen, ...

Dependency Management