Überprüfen von Änderungen mit GitHub Actions
Wenn trunkbasierte Entwicklung eingeführt ist, läuft jede vorgeschlagene Änderung über einen Pull Request. Diese Pull-Anforderung ist auch der natürliche Moment, automatisierte Prüfungen auszuführen. Eine Änderung, die das Trainingsskript funktionsunfähig macht, sollte main nicht erreichen, und ein Reviewer sollte nicht jeden Codefehler manuell finden müssen.
Workflows, Trigger und die Qualitätsschranke
Ein GitHub Actions Workflow ist eine YAML-Datei, die in Ihrem Repository unter .github/workflows/ gespeichert ist. Sie definiert, was ausgeführt werden soll, wann sie ausgeführt werden soll und in welcher Reihenfolge. Ein Trigger (der on: Schlüssel) teilt GitHub mit, wann er gestartet werden soll.
Für den Proseware-Validierungsworkflow passt der pull_request Trigger zu der Aufgabe. Standardmäßig wird er ausgeführt, wenn ein Pull Request geöffnet, erneut geöffnet oder mit neuen Commits aktualisiert wird. Das Ergebnis erscheint als Statusprüfung im Pull Request.
Aufträge, Läufer und Schritte
Ein Workflow gliedert die Arbeit in Jobs. Jeder Auftrag wird auf einem Runner ausgeführt – einer virtuellen Maschine, die von GitHub bereitgestellt oder von Ihrer Organisation verwaltet wird. Ein Auftrag enthält sortierte Schritte , die das Repository auschecken, Tools installieren und Befehle ausführen.
Für den Proseware-Trainingscode könnte ein Validierungsauftrag Folgendes umfassen:
- Sehen Sie sich das Repository an.
- Installieren Sie einen Linter (z. B. Flake8 für Python), und führen Sie ihn für die Schulungsskripts aus.
- Führen Sie Komponententests (z. B. Pytest) aus, um zu überprüfen, ob sich Skriptfunktionen ordnungsgemäß verhalten.
Diese Schritte werden automatisch für jede Pullanforderung ausgeführt. Niemand muss sich daran erinnern, sie lokal auszuführen.
Erforderliche Überprüfungen vornehmen
Das automatische Ausführen von Prüfungen ist nur die Hälfte des Schutzes. Die andere Hälfte führt dazu, dass diese Prüfungen blockiert werden. In den Einstellungen für den Branchschutz können Sie mit der Option Statusprüfungen müssen erfolgreich sein, bevor ein Merge durchgeführt werden kann bestimmte Jobs angeben. Ein Pull Request kann erst zusammengeführt werden, wenn die genannten Jobs erfolgreich abgeschlossen wurden.
Zusammen bilden trunk-basierte Entwicklung und erforderliche Statusprüfungen eine Qualitätsschranke: der Data Scientist öffnet einen Pull Request, der Workflow wird ausgeführt, und die Schaltfläche „Zusammenführen“ bleibt deaktiviert, bis der Code alle Prüfungen besteht.
Tipp
Die Statusüberprüfung wird durch den Auftragsnamen in der Workflowdatei identifiziert. Verwenden Sie einen klaren, stabilen Namen, damit es in den Branch-Schutzeinstellungen leicht zu finden ist.
Tipp
Denken Sie an eine Vorverarbeitungsänderung mit gültiger Python Syntax, aber an eine falsche Ausgabe. Welche Prüfung könnte Stilprobleme erfassen, und welche Überprüfung muss das Verhalten überprüfen?