CI/CD für C++-Projekte: Einrichtung von GitHub Actions

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

CI/CD für C++-Projekte: Vollständige Anleitung zur Einrichtung von GitHub Actions



In der modernen Softwareentwicklung ist die Automatisierung von Build-, Test- und Bereitstellungsprozessen nicht nur eine Annehmlichkeit, sondern eine Notwendigkeit geworden. Für C++-Projekte, die sich oft durch komplexe Build-Systeme und Abhängigkeiten auszeichnen, ist die Einführung von CI/CD (Continuous Integration / Continuous Deployment) besonders relevant. In diesem Artikel werden wir im Detail besprechen, wie man eine CI/CD-Pipeline für C++-Projekte mit GitHub Actions einrichtet – einem leistungsstarken und integrierten Automatisierungstool.



Was ist GitHub Actions und warum ist es für C++ geeignet?



GitHub Actions ist eine Plattform zur Automatisierung von Arbeitsabläufen (Workflows), mit der Sie CI/CD-Pipelines direkt in Ihrem Repository auf GitHub erstellen können. Für C++-Entwickler ist dies aus mehreren Gründen eine ideale Lösung:



  • Kostenlose Build-Minuten für öffentliche Repositories.
  • Unterstützung für Linux, macOS und Windows – Sie können plattformübergreifende Builds testen.
  • Flexible Konfiguration über YAML-Dateien.
  • Riesiges Ökosystem vorgefertigter Aktionen (actions) zur Installation von Compilern, Abhängigkeiten und Tools.


Das Hauptelement ist ein Workflow, der in der Datei .github/workflows/*.yml beschrieben wird. Jeder Workflow besteht aus einem oder mehreren Jobs (Aufgaben), die auf virtuellen Maschinen (Runnern) ausgeführt werden.



Einrichtung einer grundlegenden Pipeline: Build und Tests



Beginnen wir mit dem Einfachsten – wir erstellen einen Workflow, der Ihr C++-Projekt mit CMake erstellt und jedes Mal Tests ausführt, wenn Sie Änderungen an den Branch main pushen oder einen Pull Request erstellen.



Erstellen Sie die Datei .github/workflows/build.yml im Stammverzeichnis Ihres Repositories und fügen Sie den folgenden Code hinzu:



name: C++ CI Build

on: push: branches: [ "main" ] pull_request: branches: [ "main" ]

jobs: build: runs-on: ubuntu-latest

steps: - name: Checkout repository uses: actions/checkout@v4

- name: Install dependencies run: | sudo apt-get update sudo apt-get install -y cmake g++ libgtest-dev

- name: Configure CMake run: cmake -B build -DCMAKE_BUILD_TYPE=Release

- name: Build run: cmake --build build --config Release

- name: Run tests working-directory: ./build run: ctest --output-on-failure


Lassen Sie uns diesen Code Schritt für Schritt durchgehen:

  • name – der Name des Workflows, der in der GitHub-Oberfläche angezeigt wird.
  • on – die Trigger, bei denen der Workflow ausgeführt wird (push und pull_request in main).
  • runs-on – das Betriebssystem des Runners (ubuntu-latest, windows-latest, macos-latest).
  • actions/checkout – die Standardaktion, die Ihr Repository klont.
  • Install dependencies – installiert CMake, den GCC-Compiler und die Google Test-Bibliothek für Unit-Tests.
  • Configure, Build, Run tests – Standard-CMake-Befehle zum Erstellen und Ausführen von Tests.


Optimierung: Caching und Matrix-Builds



Die grundlegende Pipeline funktioniert, kann aber erheblich verbessert werden. Zwei Schlüsseltechniken sind Caching von Abhängigkeiten und Matrix-Builds.



Caching zur Beschleunigung des Builds

Jedes Mal, wenn der Workflow ausgeführt wird, lädt der Runner alle Abhängigkeiten erneut herunter. Das kostet Zeit. Verwenden Sie actions/cache, um den CMake-Cache und installierte Pakete zu speichern:



    - name: Cache CMake build      uses: actions/cache@v3      with:        path: |          build          /usr/l                

Blogs

Buchempfehlungen