Einführung: Warum CI/CD für C# (.NET) Projekte entscheidend ist
Moderne Softwareentwicklung ist ohne Automatisierung nicht möglich. Manuelle Build-, Test- und Bereitstellungsprozesse sind nicht nur langsam, sondern auch fehleranfällig. Für C#-Entwickler, die mit dem .NET-Ökosystem arbeiten, wird die Einführung von CI/CD (Continuous Integration / Continuous Deployment) zum Industriestandard.
GitHub Actions ist ein leistungsstarkes und flexibles Tool zur Automatisierung von Arbeitsabläufen, das direkt in GitHub integriert ist. Es ermöglicht die Erstellung von Pipelines (Workflows), die auf Ereignisse im Repository reagieren: Pushes, Pull Requests, Releases und vieles mehr. In diesem Artikel werden wir durchgehen, wie man eine vollständige CI/CD-Pipeline für ein C#-Projekt auf Basis von .NET mit GitHub Actions einrichtet.
Sie erfahren, wie Sie:
- Den automatischen Build des Projekts einrichten.
- Unit-Tests (z. B. xUnit oder NUnit) ausführen.
- Build-Artefakte veröffentlichen.
- Die Anwendung automatisch deployen (z. B. auf Azure, Docker Hub oder einen Server).
1. Grundlagen von GitHub Actions: Workflow, Jobs und Steps
Bevor wir Code schreiben, lassen Sie uns die grundlegenden Konzepte von GitHub Actions verstehen.
- Workflow: Dies ist ein automatisierter Prozess, den Sie in einer YAML-Datei im Ordner
.github/workflowsdefinieren. Ein Workflow wird durch einen Trigger gestartet (z. B. Push in den main-Branch). - Job: Eine Reihe von Schritten (steps), die auf einem einzigen Runner (virtuellen Maschine) ausgeführt werden. Jobs können sequenziell oder parallel ausgeführt werden.
- Step: Ein einzelner Befehl oder eine Aktion (action). Dies kann das Ausführen eines Skripts, die Installation von Abhängigkeiten oder die Verwendung einer vorgefertigten Action aus dem Marketplace sein.
- Runner: Der Server, der Ihren Workflow ausführt. GitHub stellt kostenlose Runner (Ubuntu, Windows, macOS) zur Verfügung, oder Sie können Ihren eigenen betreiben.
Für .NET-Projekte werden wir vorgefertigte Actions wie actions/checkout (zum Klonen des Repositorys) und actions/setup-dotnet (zur Installation des .NET SDK) verwenden.
2. Einrichtung einer grundlegenden CI-Pipeline: Build und Test
Erstellen wir unseren ersten Workflow. Erstellen Sie dazu im Stammverzeichnis des Repositorys den Ordner .github/workflows und darin die Datei dotnet-build.yml.
Hier ist die minimale YAML-Datei zum Bauen und Testen eines C#-Projekts:
name: .NET Build and Test
on: push: branches: [ main, develop ] pull_request: branches: [ main ]
jobs: build-and-test: runs-on: ubuntu-latest
steps: - name: Checkout repository uses: actions/checkout@v4
- name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # Geben Sie Ihre .NET-Version an
- name: Restore dependencies run: dotnet restore
- name: Build run: dotnet build --no-restore --configuration Release
- name: Run tests run: dotnet test --no-build --configuration Release --verbosity normalCode-Analyse:
- name: Der Name des Workflows, der in GitHub angezeigt wird.
- on: Definiert die Trigger. In unserem Fall – Push und Pull Request in die Branches main und develop.
- jobs: Enthält eine Aufgabe
build-and-test, die aufubuntu-latestausgeführt wird. - steps: Eine Abfolge von Aktionen: Code klonen, .NET 8.0 installieren, NuGet-Pakete wiederherstellen, im Release-Modus bauen und Tests ausführen.
Nachdem Sie diese Datei in das Repository gepusht haben, wird GitHub Actions den Workflow automatisch starten. Sie sehen entweder einen grünen Haken oder ein rotes Kreuz neben dem Commit.