bg_image
header

GitHub Actions

GitHub Actions ist ein Feature von GitHub, mit dem du automatisierte Workflows für deine Softwareprojekte erstellen kannst – direkt im GitHub-Repository.


🛠️ Was kann man mit GitHub Actions machen?

Du kannst CI/CD-Pipelines (Continuous Integration / Continuous Deployment) aufbauen, z. B.:

  • Code automatisch testen (z. B. mit PHPUnit, Jest, Pytest)

  • 🛠️ Code bei jedem Push oder Pull Request builden

  • 🚀 Software automatisch deployen (z. B. auf einen Webserver, in die Cloud, zu DockerHub)

  • 📦 Releases erstellen (z. B. ZIP-Dateien, Versionstags)

  • 🔄 Cronjobs oder geplante Tasks laufen lassen


🧱 Wie funktioniert es?

GitHub Actions basiert auf sogenannten Workflows, die du in einer Datei definierst:

  • Die Datei heißt z. B. .github/workflows/ci.yml

  • Sie ist im YAML-Format

  • Du definierst Events (z. B. push, pull_request) und Jobs (z. B. build, test)

  • Jobs bestehen aus Steps, die Befehle oder Aktionen ausführen

Beispiel: Einfacher CI-Workflow für Node.js

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '20'
      - run: npm install
      - run: npm test

🧩 Was sind "Actions"?

Eine Action ist ein einzelner Schritt, den man in einem Workflow ausführt. Es gibt:

  • Vorgefertigte Actions (z. B. actions/checkout, setup-node, upload-artifact)

  • Eigene Actions (z. B. Shell-Skripte oder Docker-Container)

Du kannst Actions im GitHub Marketplace finden und nutzen.


💡 Warum ist das nützlich?

  • Spart manuelle Arbeit

  • Verbessert Codequalität (durch automatisierte Tests)

  • Macht Deployments reproduzierbar

  • Alles direkt in GitHub – kein externer CI-Dienst nötig (wie Jenkins oder Travis CI)


SonarQube

SonarQube ist ein Open-Source-Tool zur kontinuierlichen Analyse und Qualitätssicherung von Quellcode. Es hilft Entwicklern und Teams, die Codequalität zu bewerten, Schwachstellen zu identifizieren und Best Practices in der Softwareentwicklung zu fördern.

Hauptfunktionen:

  1. Codequalität prüfen:

    • SonarQube analysiert Quellcode und bewertet Aspekte wie Lesbarkeit, Wartbarkeit und Architekturqualität.
    • Es erkennt potenzielle Probleme wie Code-Duplikate, nicht genutzte Variablen oder komplexe Methoden.
  2. Sicherheitslücken aufdecken:

  3. Technische Schulden bewerten:

    • Technische Schulden sind die Aufwände, die nötig wären, um den Code auf einen optimalen Zustand zu bringen.
    • SonarQube visualisiert diese Schulden, um Priorisierungen zu erleichtern.
  4. Unterstützung für viele Programmiersprachen:

    • Es unterstützt mehr als 20 Sprachen, darunter Java, Python, JavaScript, C#, C++, PHP und viele mehr.
  5. Integration in CI/CD-Pipelines:

    • SonarQube lässt sich leicht in Tools wie Jenkins, GitLab CI/CD oder Azure DevOps integrieren.
    • Dadurch kann Code bei jedem Commit oder vor einem Release geprüft werden.
  6. Berichte und Dashboards:

    • Es bietet übersichtliche Dashboards mit Metriken, Trends und Detailanalysen.
    • Entwickler können leicht erkennen, wo Verbesserungen nötig sind.

Einsatzbereiche:

  • Unternehmen: Zur Sicherstellung der Codequalität und Einhaltung von Sicherheitsstandards in großen Softwareprojekten.
  • Teams: Für eine kontinuierliche Verbesserung des Codes und zur Förderung guter Entwicklungspraktiken.
  • Einzelentwickler: Als Lernwerkzeug, um besseren Code zu schreiben.

SonarQube ist in einer kostenlosen Community-Edition und in kommerziellen Versionen mit erweiterten Funktionen verfügbar (z. B. für größere Teams oder spezielle Sicherheitsanalysen).

 


Churn PHP

Churn PHP ist ein Tool, das dabei hilft, potenziell riskante oder wartungsintensive Teile in einem PHP-Code zu identifizieren. Es analysiert, wie oft Klassen oder Funktionen geändert wurden (Churn-Rate) und wie komplex sie sind (zyklomatische Komplexität). Das Hauptziel besteht darin, Bereiche im Code zu finden, die sich häufig ändern und schwer zu warten sind, was darauf hinweist, dass sie von einer Überarbeitung profitieren könnten oder genauere Aufmerksamkeit benötigen.

Hauptfunktionen:

  • Churn-Analyse: Misst, wie oft bestimmte Teile des Codes über die Zeit geändert wurden, basierend auf der Versionskontrollhistorie.
  • Zyklomatische Komplexität: Bewertet die Komplexität des Codes, was Aufschluss darüber gibt, wie schwer er zu verstehen oder zu testen ist.
  • Handlungsorientierte Einblicke: Kombiniert die Churn- und Komplexitätswerte, um Codebereiche hervorzuheben, die möglicherweise refaktoriert werden sollten.

Kurz gesagt, Churn PHP hilft Entwicklern, technischen Schulden vorzubeugen, indem es problematische Codebereiche markiert, die in Zukunft potenziell Probleme verursachen könnten. Es lässt sich gut in Git-Repositories integrieren und kann als Teil einer CI/CD-Pipeline ausgeführt werden.

 


PHP CodeSniffer

PHP_CodeSniffer (oft kurz „Codesniffer“ genannt) ist ein Tool, das zur Analyse und Durchsetzung von Coding-Standards in PHP-Code verwendet wird. Es überprüft PHP-Dateien auf Einhaltung bestimmter Regeln und sorgt dafür, dass der Code konsistent und gut strukturiert ist. Codesniffer kann in Projekten genutzt werden, um sicherzustellen, dass alle Entwickler einheitlich programmieren und vorgegebene Standards einhalten, was die Wartbarkeit und Qualität des Codes verbessert.

Hauptfunktionen:

  1. Überprüfung von Coding-Standards: PHP_CodeSniffer kann den Code auf Einhaltung von Standards wie PSR-1, PSR-2, PSR-12 oder benutzerdefinierten Regeln überprüfen.
  2. Automatische Fehlerkorrektur: Mit PHP_CodeSniffer lassen sich bestimmte Probleme automatisch beheben, wie z.B. das Entfernen unnötiger Leerzeichen oder das Anpassen von Einrückungen.
  3. Integration in CI/CD-Pipelines: Codesniffer kann in Continuous-Integration-Systeme integriert werden, um die Code-Qualität in jedem Schritt des Entwicklungsprozesses zu überprüfen.

Einsatzmöglichkeiten:

  • Sicherstellung der Code-Qualität in Team-Projekten.
  • Automatische Einhaltung von Standards wie PSR-12.
  • Integration in Code-Editoren (wie PHPStorm) für Echtzeit-Feedback während des Programmierens.

Durch die Verwendung von PHP_CodeSniffer bleibt der Code konsistent und qualitativ hochwertig, was langfristig die Wartbarkeit eines Projekts deutlich erhöht.

 


Deptrac

Deptrac ist ein statisches Analysewerkzeug für PHP-Anwendungen, das dabei hilft, architektonische Regeln in einem Codebase durchzusetzen. Es analysiert die Abhängigkeiten eines Projekts und überprüft, ob diese den festgelegten architektonischen Vorgaben entsprechen. Das Hauptziel von Deptrac ist es, zu verhindern, dass verschiedene Komponenten zu eng miteinander gekoppelt werden, und somit eine klare, wartbare Struktur zu gewährleisten, besonders in größeren oder wachsenden Projekten.

Wichtige Merkmale von Deptrac:

  1. Schichteinteilung: Es ermöglicht die Definition von Schichten in einer Anwendung (z. B. Controller, Services, Repositories) und legt fest, wie diese Schichten voneinander abhängen dürfen.
  2. Erkennung von Verstößen: Deptrac erkennt und meldet, wenn eine Abhängigkeit gegen die architektonischen Regeln verstößt, was dazu beiträgt, sauberere Grenzen zwischen Komponenten zu bewahren.
  3. Anpassbare Regeln: Die Regeln und Schichten können an die Architektur des Projekts angepasst werden, was Flexibilität bei der Gestaltung ermöglicht.
  4. Integration in CI/CD: Es kann in CI-Pipelines integriert werden, um architektonische Regeln automatisch durchzusetzen und langfristige Codequalität sicherzustellen.

Deptrac ist besonders nützlich, um Entkopplung und Modularität sicherzustellen, was in skalierenden und umgestaltenden Projekten entscheidend ist. Durch das frühzeitige Erkennen architektonischer Verstöße trägt es dazu bei, technische Schulden zu vermeiden.

 


Dev Space

Dev Space ist eine cloudbasierte Entwicklungsumgebung, die es Entwicklern ermöglicht, vollständig konfigurierbare Arbeitsbereiche für Softwareentwicklung direkt in der Cloud zu erstellen und zu nutzen. Sie bietet Tools und Ressourcen, um eine Entwicklungsumgebung bereitzustellen, ohne dass man lokal Software installieren oder konfigurieren muss.

Merkmale von Dev Space:

  • Cloud-basierte Entwicklungsumgebung: Dev Space bietet eine Entwicklungsumgebung, die über den Webbrowser zugänglich ist, sodass Entwickler auf jedem Gerät arbeiten können, ohne sich um die lokale Konfiguration kümmern zu müssen.
  • Vorkonfigurierte Workspaces: Entwickler können spezielle Workspaces erstellen, die bereits mit allen notwendigen Tools, Bibliotheken und Abhängigkeiten für ein bestimmtes Projekt vorkonfiguriert sind.
  • Kollaboratives Arbeiten: Da es sich um eine Cloud-Lösung handelt, können Teams in Echtzeit zusammenarbeiten, Änderungen verfolgen und gemeinsam am selben Code arbeiten.
  • Integration mit CI/CD: Dev Space lässt sich oft in gängige Continuous Integration/Continuous Deployment (CI/CD)-Pipelines integrieren, was es einfach macht, den Code automatisch zu testen und zu deployen.
  • Automatische Skalierung: Da es in der Cloud läuft, kann Dev Space je nach Bedarf automatisch Ressourcen skalieren, was es besonders für größere oder komplexe Projekte geeignet macht.

Vorteile:

  • Keine lokale Einrichtung erforderlich: Entwickler müssen keine lokalen Entwicklungsumgebungen einrichten, was Zeit spart und mögliche Konflikte vermeidet.
  • Portabilität: Projekte können von überall und auf jedem Gerät fortgesetzt werden, da alles in der Cloud gespeichert ist.
  • Schnelle Einrichtung neuer Projekte: Da man vorkonfigurierte Umgebungen erstellen kann, ist der Start neuer Projekte sehr effizient.

Dev Space bietet eine moderne Lösung für Entwicklerteams, die flexibel und ortsunabhängig arbeiten möchten, ohne die Komplexität der lokalen Einrichtung und Wartung von Entwicklungsumgebungen.

 


Exakat

Exakat ist ein statisches Analyse-Tool für PHP, das speziell entwickelt wurde, um die Codequalität zu verbessern und Best Practices in PHP-Projekten sicherzustellen. Ähnlich wie Psalm konzentriert es sich auf die Analyse von PHP-Code, bietet jedoch einige einzigartige Funktionen und Analysen, um Entwicklern zu helfen, Fehler zu erkennen und ihre Anwendungen effizienter und sicherer zu machen.

Hier sind einige der Hauptfunktionen von Exakat:

  1. Code-Qualität und Best Practices: Exakat analysiert den Code basierend auf empfohlenen PHP-Best-Practices und stellt sicher, dass er den aktuellen Standards entspricht.
  2. Sicherheitsanalyse: Das Tool identifiziert potenzielle Sicherheitslücken im Code, wie SQL-Injections, Cross-Site-Scripting (XSS) oder andere Schwachstellen.
  3. Kompatibilitätsprüfungen: Exakat überprüft, ob der PHP-Code mit verschiedenen PHP-Versionen kompatibel ist. Das ist besonders nützlich, wenn eine Anwendung auf eine neue PHP-Version aktualisiert wird.
  4. Erkennung von totem Code: Es identifiziert ungenutzte Variablen, Methoden oder Klassen, die entfernt werden können, um den Code sauberer und leichter wartbar zu machen.
  5. Dokumentationsanalyse: Es überprüft, ob der Code gut dokumentiert ist und ob die vorhandene Dokumentation mit dem tatsächlichen Code übereinstimmt.
  6. Berichterstattung: Exakat erstellt detaillierte Berichte über den Zustand des Codes, einschließlich Metriken zur Codequalität, Sicherheitslücken und potenziellen Verbesserungen.

Exakat kann als eigenständiges Tool oder in eine Continuous Integration (CI)-Pipeline integriert werden, um sicherzustellen, dass Code kontinuierlich auf Qualität und Sicherheit überprüft wird. Es ist ein vielseitiges Werkzeug für PHP-Entwickler, die ihren Code verbessern und auf einem hohen Standard halten möchten.

 


Psalm

Psalm ist ein PHP Static Analysis Tool, das speziell für PHP-Anwendungen entwickelt wurde. Es hilft Entwicklern dabei, Fehler im Code frühzeitig zu erkennen, indem es den Code statisch analysiert.

Hier sind einige Funktionen von Psalm in der Softwareentwicklung:

  1. Fehlererkennung: Psalm durchsucht PHP-Code nach potenziellen Fehlern, wie Typinkonsistenzen, Null-Referenzen oder unbehandelten Ausnahmen.
  2. Typensicherheit: Es prüft die Typen von Variablen und Rückgabewerten, um sicherzustellen, dass der Code keine Typfehler enthält.
  3. Code-Qualität: Es unterstützt bei der Einhaltung von Best Practices und hilft, die Codequalität zu verbessern.
  4. Performance: Da Psalm statisch arbeitet, also den Code analysiert, ohne ihn auszuführen, ist es schnell und kann kontinuierlich in den Entwicklungsprozess integriert werden (z. B. als Teil einer CI/CD-Pipeline).

Zusammengefasst ist Psalm ein nützliches Werkzeug für PHP-Entwickler, um robusteren, sichereren und besser getesteten Code zu schreiben.

 


Rolling Deployment

Rolling Deployment ist eine Methode zur schrittweisen Bereitstellung einer neuen Softwareversion, bei der die Anwendung Server für Server oder Knoten für Knoten aktualisiert wird. Ziel ist es, eine kontinuierliche Verfügbarkeit der Anwendung während des Updates sicherzustellen, indem immer nur ein Teil der Infrastruktur aktualisiert wird, während der Rest weiterhin die alte Version verwendet.

Wie funktioniert es?

  1. Inkrementelles Update: Die neue Version wird auf einem Teil der Server (z. B. einem Server in einem Cluster) bereitgestellt. Der Rest der Server bedient weiterhin den Benutzerverkehr mit der alten Version.
  2. Überwachung: Jeder aktualisierte Server wird überwacht, um sicherzustellen, dass die neue Version stabil und funktionsfähig ist. Wenn keine Probleme auftreten, wird der nächste Server aktualisiert.
  3. Fortschreitende Aktualisierung: Dieser Prozess wird fortgesetzt, bis alle Server auf die neue Version aktualisiert wurden.
  4. Rollback-Fähigkeit: Wenn auf einem der aktualisierten Server Probleme festgestellt werden, kann das Deployment gestoppt oder ein Rollback auf die vorherige Version durchgeführt werden, bevor weitere Server aktualisiert werden.

Vorteile:

  • Kontinuierliche Verfügbarkeit: Da immer nur ein Teil der Infrastruktur aktualisiert wird, bleibt die Anwendung für Benutzer verfügbar.
  • Risikominimierung: Probleme können auf einem kleinen Teil der Infrastruktur erkannt werden, bevor sie die gesamte Anwendung betreffen.
  • Effizient für große Systeme: Besonders bei großen verteilten Systemen ist es effizient, schrittweise vorzugehen, anstatt die gesamte Anwendung auf einmal zu aktualisieren.

Nachteile:

  • Längere Bereitstellungszeit: Da die Aktualisierung schrittweise erfolgt, dauert der gesamte Deployment-Prozess länger als bei einem vollständigen Deployment.
  • Komplexität bei der Überwachung: Es kann schwieriger sein, verschiedene Versionen parallel zu überwachen und sicherzustellen, dass sie korrekt interagieren, insbesondere wenn es um Datenstrukturen oder APIs geht.
  • Dateninkonsistenz: Wie bei anderen Deployment-Strategien, bei denen mehrere Versionen gleichzeitig aktiv sind, kann es zu Problemen bei der Datenkonsistenz kommen.

Ein Rolling Deployment ist ideal für große, skalierbare Systeme, die eine kontinuierliche Verfügbarkeit erfordern, und reduziert das Risiko durch eine schrittweise Bereitstellung.

 


Blue Green Deployment

Blue-Green Deployment ist eine Methode zur Bereitstellung von Anwendungen, die dazu dient, Ausfallzeiten und Risiken während eines Software-Deployments zu minimieren. Es gibt dabei zwei nahezu identische Produktionsumgebungen, die als Blue und Green bezeichnet werden.

Wie funktioniert es?

  1. Aktive Umgebung: Eine der Umgebungen, z. B. Blue, ist live und verarbeitet den gesamten Benutzer-Traffic.
  2. Vorbereitung der neuen Version: Die neue Version der Anwendung wird in der inaktiven Umgebung, z. B. Green, bereitgestellt und getestet, während die alte Version weiterhin in der Blue-Umgebung läuft.
  3. Umstellung des Traffics: Wenn die neue Version in der Green-Umgebung als stabil bestätigt wird, wird der Traffic von der Blue-Umgebung auf die Green-Umgebung umgeschaltet.
  4. Rollback-Fähigkeit: Falls es Probleme mit der neuen Version gibt, kann der Traffic schnell wieder auf die vorherige, unveränderte Blue-Umgebung zurückgeschaltet werden.

Vorteile:

  • Kein Ausfall: Die Benutzer merken nichts von der Aktualisierung, da der Wechsel zwischen den Umgebungen nahtlos erfolgt.
  • Einfaches Rollback: Falls nach dem Deployment Probleme auftreten, kann man schnell zur alten Umgebung zurückkehren.
  • Vollständiges Testen: Die neue Version wird in einer Produktionsumgebung getestet, ohne dass der Live-Traffic betroffen ist.

Nachteile:

  • Kosten: Zwei Umgebungen aufrechtzuerhalten, kann ressourcenintensiv und teuer sein.
  • Daten-Synchronisation: Es kann komplex sein, die Datenkonsistenz sicherzustellen, insbesondere wenn sich die Datenbank während der Umstellung ändert.

Blue-Green Deployment ist eine effektive Methode, um kontinuierliche Verfügbarkeit zu gewährleisten und das Risiko von Störungen während eines Deployments zu reduzieren.