🌐 Detecting your location…
📢 Advertisement — Configure AdSense in Appearance → Customize → AdSense Settings

So richten Sie eine CI/CD-Pipeline mit GitHub Actions im Jahr 2026 ein: Vollständige Anleitung

⏱️4 min read  ·  812 words

GitHub-Aktionen ist die beliebteste CI/CD-Plattform im Jahr 2026 – integriert in GitHub, mit einem riesigen Marktplatz vorgefertigter Aktionen. Dieser Leitfaden erstellt eine vollständige Pipeline vom Testen bis zur Bereitstellung, vollständig in YAML-Dateien in Ihrem Repository.

So funktionieren GitHub-Aktionen

Arbeitsabläufe leben in.github/workflows/*.yml. Jeder Workflow wird bei Ereignissen (Push, Pull Request, Zeitplan) ausgelöst und enthältArbeitsplätze die auflaufen Läufer (Von GitHub gehostete VMs). Jobs enthaltenSchritte – entweder Shell-Befehle oder wiederverwendbareAktionen.

Grundlegender CI-Workflow

# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - run: npm ci
      - run: npm run lint
      - run: npm test
      - run: npm run build

Matrix-Builds (Testen mehrerer Versionen)

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        node: [18, 20, 22]
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - run: npm ci
      - run: npm test
# Runs 9 combinations (3 OS x 3 Node versions) in parallel

Caching-Abhängigkeiten

steps:
  - uses: actions/checkout@v4

  # setup-node has built-in caching
  - uses: actions/setup-node@v4
    with:
      node-version: '20'
      cache: 'npm'   # caches ~/.npm automatically

  # Or cache manually for other tools
  - uses: actions/cache@v4
    with:
      path: |
        ~/.cache/pip
        .venv
      key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}

Docker-Images erstellen und pushen

name: Build and Push

on:
  push:
    branches: [main]

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - uses: docker/build-push-action@v6
        with:
          context: .
          push: true
          tags: |
            ghcr.io/${{ github.repository }}:latest
            ghcr.io/${{ github.repository }}:${{ github.sha }}
          cache-from: type=gha
          cache-to: type=gha,mode=max

Bereitstellung mit Umgebungen und Genehmigungen

jobs:
  deploy:
    runs-on: ubuntu-latest
    needs: [test]           # only deploy if tests pass
    environment:
      name: production      # can require manual approval in repo settings
      url: https://example.com
    steps:
      - uses: actions/checkout@v4

      - name: Deploy via SSH
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.PROD_HOST }}
          username: ${{ secrets.DEPLOY_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /app
            docker compose pull
            docker compose up -d

Geheimnisse verwalten

Speichern Sie Geheimnisse inRepo-Einstellungen, dann Geheimnisse und Variablen, dann Aktionen. Referenzieren Sie sie als${{ secrets.NAME }}. Sie werden in Protokollen maskiert und niemals angezeigt. Verwenden Sie umgebungsspezifische Geheimnisse für die Bereitstellung und Produktion.

steps:
  - run: ./deploy.sh
    env:
      API_KEY: ${{ secrets.API_KEY }}
      DATABASE_URL: ${{ secrets.DATABASE_URL }}

Wiederverwendbare Workflows und zusammengesetzte Aktionen

# Call a reusable workflow to avoid duplication
jobs:
  call-shared:
    uses: ./.github/workflows/shared-test.yml
    with:
      node-version: '20'
    secrets: inherit

# shared-test.yml declares:
# on:
#   workflow_call:
#     inputs:
#       node-version:
#         type: string

Optimierungstipps

  • Verwenden Sieneeds: um die Auftragsreihenfolge zu steuern und unabhängige Aufträge parallel auszuführen
  • Cache-Abhängigkeiten – die größte Beschleunigung für die meisten Pipelines
  • Veraltete Ausführungen abbrechen: concurrency: { group: ${{ github.ref }}, cancel-in-progress: true }
  • Verwenden Sie Pfadfilter: Workflows nur ausführen, wenn sich relevante Dateien ändern
  • Pin-Aktionsversionen (@v4) für Stabilität und Sicherheit

Häufig gestellte Fragen

F: GitHub Actions vs. GitLab CI vs. Jenkins?
A: GitHub-Aktionen, wenn Ihr Code auf GitHub ist – tiefe Integration und ein riesiger Marktplatz. GitLab CI für von GitLab gehosteten Code. Jenkins für maximale Kontrolle/Selbsthosting oder komplexe Unternehmensanforderungen. Aktionen sind für GitHub-Projekte am einfachsten.

F: Ist GitHub Actions kostenlos?
A: Öffentliche Repos erhalten unbegrenzte Freiminuten. Private Repos erhalten ein monatliches kostenloses Kontingent und zahlen dann pro Minute. Für die meisten kleinen Projekte und Open Source ist es praktisch kostenlos.

F: Wie beschleunige ich langsame Arbeitsabläufe?
A: Cache-Abhängigkeiten (größter Gewinn), Jobs parallel mitneeds:ausführen , verwenden Sie Pfadfilter, um irrelevante Ausführungen zu überspringen und veraltete Ausführungen mit Parallelitätsgruppen abzubrechen. Profilieren Sie zuerst, welche Schritte am langsamsten sind.

F: Wie benötige ich eine Genehmigung, bevor die Produktion bereitgestellt wird?
A: Verwenden Sie GitHub-Umgebungen mit den erforderlichen Prüfern. Konfigurieren Sieproduction Umgebung in den Repo-Einstellungen so festlegen, dass eine manuelle Genehmigung erforderlich ist – der Bereitstellungsjob wird angehalten, bis ein genehmigter Prüfer dies bestätigt.

F: Kann ich Workflows nach einem Zeitplan ausführen?
A: Ja – verwenden Sieon: schedule: - cron: '0 0 * * *' für geplante Läufe (nächtliche Builds, Bereinigungsjobs, regelmäßige Überprüfungen). Die Cron-Syntax steuert das Timing.

Fazit

GitHub Actions macht CI/CD mit allem, was in YAML in Ihrem Repo definiert ist, zugänglich. Dieser Leitfaden behandelt das Wesentliche – CI-Workflows mit Matrix-Builds, Abhängigkeits-Caching, Docker-Image-Erstellung und Bereitstellung mit Umgebungsgenehmigungen. Der riesige Markt an vorgefertigten Aktionen bedeutet, dass Sie selten Dinge von Grund auf neu schreiben. Beginnen Sie mit einem einfachen Test-Workflow, fügen Sie inkrementell Build- und Deployment-Jobs hinzu, puffern Sie intensiv, um die Geschwindigkeit zu erhöhen, und nutzen Sie Umgebungen, um Produktionsbereitstellungen zu steuern. Es ist der schnellste Weg zu professionellem CI/CD für GitHub-gehostete Projekte.

✍️ Leave a Comment

Your email address will not be published. Required fields are marked *

🌐 Read in:🇩🇪 Deutsch🇧🇷 Português🇸🇦 العربية🇮🇳 हिन्दी🇧🇩 বাংলা