Workflows
GitHub Management
Pull Request Labeler
Der Workflow "Pull Request Labeler" (.github/workflows/pr_labeler.yml
) nutzt die GitHub Action Labeler.
Der Workflow labled neue Pull Requests automatisch basierend auf den geänderten Dateien mit apps/ und packages/ Labels.
Damit dieses Labeling korrekt funktioniert müssen die einzelnen Labels in der Konfigurationsdatei .github/labeler.yml
zu den zugehörigen Dateipfaden zugeordnet werden.
# This file is enabling the Labeler Action to run. Labeler is configured in .github/labeler.yml
name: "Pull Request Labeler"
on:
- pull_request_target
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v5
# This file serves as configuration file for the labeler Workflow (.github/workflows/pr_labeler.yml)
# Labels for Repo-Root (Turborepo Administration)
# Labels for Github Health Files
github-management:
- changed-files:
- any-glob-to-any-file: ".github/**"
# Labels for apps/* changes
apps/docs:
- changed-files:
- any-glob-to-any-file: apps/docs/**
apps/northware-cockpit:
- changed-files:
- any-glob-to-any-file: apps/northware-cockpit/**
...
# Labels for pakages/* changes
packages/auth:
- changed-files:
- any-glob-to-any-file: packages/auth/**
packages/database:
- changed-files:
- any-glob-to-any-file: packages/database/**
...
Workflows des Northware New Projekts
Das Northware New Projekt nutzt einige Workflows, die die Arbeit mit dem Projket teilweise automatisieren und unterstützen. Die Workflows sind nicht mit klassischen GitHub Actions sondern über das integrierte Workflow-Modul definiert.
Verwendete Projekt-Workflows
- Auto-add to project: Issues und Pull Requests aus dem
ncs-northware/northware
Repository werden automatisch zu dem Northare New Projekt hinzugefügt. - Item added to project: Wenn ein Issue oder Pull Request zu dem Projekt hinzugefügt wird, wird dem Eintrag der Status Triage zugeordnet.
- Item reopened: Wenn ein Issue oder Pull Request wieder geöffnet wird, wird dem Eintrag der Status In Progress zugeordnet.
- Pull Request merged: Wenn ein Pull Request gemerged wurde, wird ihm der Status Done zugeordnet.
- Item closed: Wenn ein Issue oder Pull Request geschlossen wird, wird dem Eintrag der Status Done zugeordnet.
CI/CD
Turborepo CI
Der Workflow Turborepo CI (.github/workflows/turborepo-ci.yml
) wird immer dann ausgelöst, wenn Code auf den main
Branch gepusht wird oder ein neuer Pull Request eröffnet oder aktualisiert wird.
Der Workflow nutzt den vorliegenden Code und installiert das Projekt in einer Node.js Umgebung mit pnpm
.
Mit pnpm build --affected
werden die von der Änderung betroffenen Code-Teile gebaut.
Mit pnpm lint --affected
werden Lint-Tests des betroffenen Codes ausgeführt.
Sollte es während dieses Workflows zu Problemen kommen, wird der Workflow abgebrochen.
Der Turborepo CI-Workflow durchläuft bei jedem Pull Request und bei jedem Merge die Schritte pnpm turbo build --affected
und pnpm turbo run lint --affected
.
Damit diese Schritte nicht immer erst gemacht werden, wenn alles fertig ist lässt sich dieser Ablauf mit pnpm localci
auch lokal abbilden, damit Fehler schon vor dem CI-Durchlauf auffallen.
autofix.ci
Der Workflow autofix.ci (.github/workflows/autofix.yml) wird immer dann ausgeführt, wenn ein neuer Pull Request hinzugefügt oder geändert wurde.
Innerhalb des Workflows wird das Projekt vollständig gebaut, der vorhandene Code wird formatiert. Wenn durch den Durchlauf des Workflows Änderungen am Code vorgenommen wurden, werden diese Code Fixes auf den vorhandenen Pull Request commitet.
Dieser Commit unterbricht nun alle laufenden Workflows. Diese Workflows scheitern. Anschließend starten alle vorgesehenen Workflows wieder von neuem.
Dependabot
Dependabot wird verwendet, um die im gesamten Repository verwendeten Dependencies aktuell zu halten. Wenn Dependabot Dependencies findet, bei denen es eine neue Version gibt, wird das Update umgesetzt und als Pull Request bereitgestellt.
In diesem Repository ist Dependabot so konfiguriert, das wöchentlich freitags um 14:00 Uhr der Durchlauf startet. onissen wird dann als Reviewer hinzugefügt, damit ich auf den PR aufmerksam werde.
Mit open-pull-request-limit: 0
und versioning-strategy: increase
wird gewährleistet, das Dependabot im Monorepo-Umfeld funktioniert.
Auch für GitHub Actions ist Dependabot konfiguriert, es wird also auch die Workflows auf neue Versionen prüfen.