Grundlegendes zu Workflows

Abgeschlossen

Workflows sind automatisierte Prozesse, die Sie zum Erstellen, Testen, Verpacken, Freigeben oder Bereitstellen Ihres Projekts definieren. Sie bestehen aus einem oder mehreren Aufträgen, die als Reaktion auf bestimmte Ereignisse in Ihrem Repository ausgeführt werden.

Workflowstruktur

Jeder Workflow enthält die folgenden wichtigen Komponenten:

Trigger (Ereignisse)

Definieren Sie, wann Ihr Workflow ausgeführt werden soll – auf Push, Pullanforderung, Zeitplan oder manueller Trigger.

Jobs

Eine Reihe von Schritten, die auf demselben Runner ausgeführt werden. Aufträge werden standardmäßig parallel ausgeführt, können jedoch so konfiguriert werden, dass sie sequenziell ausgeführt werden.

Steps

Einzelne Aufgaben innerhalb eines Auftrags, die Befehle ausführen, Aufgaben einrichten oder Aktionen verwenden können.

Runner

Die Computeumgebung, in der Ihre Aufträge ausgeführt werden – entweder von GitHub gehostet oder selbst gehostet.

Workflow-Standort und Namensgebung

Workflows werden als YAML-Dateien im .github/workflows Verzeichnis Ihres Repositorys gespeichert. Der Dateiname wird zur Workflow-ID in der GitHub-Benutzeroberfläche.

Beispiel für modernen Workflow

Hier ist ein umfassendes Beispiel mit den aktuellen bewährten Methoden:

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

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]
  schedule:
    - cron: "0 2 * * 0" # Weekly dependency check

env:
  NODE_VERSION: "20"

jobs:
  test:
    name: Test and Lint
    runs-on: ubuntu-latest

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

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Run linting
        run: npm run lint

      - name: Run tests with coverage
        run: npm run test:coverage

      - name: Upload coverage reports
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  build:
    name: Build Application
    runs-on: ubuntu-latest
    needs: test

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

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Build application
        run: npm run build

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-files
          path: dist/

Wichtige Verbesserungen bei modernen Workflows

In diesem Beispiel werden die aktuellen bewährten Methoden veranschaulicht:

  • Neueste Aktionsversionen: Verwenden @v4 von Versionen beliebter Aktionen
  • Zwischenspeicherung von Abhängigkeiten: Beschleunigt die Workflowausführung
  • Umgebungsvariablen: Zentrale Konfigurationsverwaltung
  • Auftragsabhängigkeiten: Auftrag build wird erst nach erfolgreichen Ausführung von test ausgeführt
  • Artefaktbehandlung: Ordnungsgemäße Speicherung und Freigabe von Build-Ergebnissen
  • Sicherheit: Verwenden von geheimen Schlüsseln für vertrauliche Daten wie Token

Weitere Ressourcen

Erkunden Sie diese Ressourcen, um Ihr Workflowwissen zu verbessern: