# Verwendung benutzerdefinierter Workflows mit GitHub Pages

Sie können die Vorteile von GitHub Actions und GitHub Pages nutzen, indem Sie eine Workflowdatei erstellen oder aus den vordefinierten Workflows auswählen.

## Informationen zu benutzerdefinierten Workflows

Benutzerdefinierte Workflows ermöglichen es, GitHub Pages Sites mithilfe von GitHub Actions zu erstellen. Du kannst den Branch, den du verwenden möchtest, weiterhin über die Workflowdatei auswählen. Mit benutzerdefinierten Workflows hast du jedoch noch viel mehr Möglichkeiten. Um mit der Verwendung benutzerdefinierter Workflows zu beginnen, musst du sie zuerst für dein aktuelles Repository aktivieren. Weitere Informationen finden Sie unter [Eine Veröffentlichungsquelle für deine GitHub Pages-Website konfigurieren](/de/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow).

## Konfigurieren der Aktion `configure-pages`

GitHub Actions ermöglicht die Nutzung von GitHub Pages durch die Aktion `configure-pages`, mit der Sie auch verschiedene Metadaten über eine Website erfassen können. Weitere Informationen finden Sie unter der Aktion [`configure-pages`](https://github.com/marketplace/actions/configure-github-pages).

Um die Aktion zu verwenden, füge diesen Codeschnipsel unter `jobs` im gewünschten Workflow ein:

```yaml
- name: Configure GitHub Pages
  uses: actions/configure-pages@v5
```

Diese Aktion hilft bei der Bereitstellung aus jedem statischen Website-Generator auf GitHub Pages. Um diesen Prozess weniger repetitiv zu gestalten, können Sie Workflowvorlagen für einige der am häufigsten verwendeten Generatoren für statische Websites verwenden. Weitere Informationen finden Sie unter [Verwenden von Workflowvorlagen](/de/actions/how-tos/write-workflows/use-workflow-templates).

## Konfigurieren der Aktion `upload-pages-artifact`

Mit den Aktionen vom Typ `upload-pages-artifact` kannst du Artefakte packen und hochladen. Das GitHub Pages Artefakt sollte ein komprimiertes `gzip` Archiv sein, das eine einzelne `tar` Datei enthält. Die Datei vom Typ `tar` muss kleiner als 10 GB sein und darf keine symbolischen oder festen Links enthalten. Weitere Informationen finden Sie unter der Aktion [`upload-pages-artifact`](https://github.com/marketplace/actions/upload-github-pages-artifact).

Um die Aktion in deinem aktuellen Workflow zu verwenden, füge das folgende Codeschnipsel unter `jobs` ein:

```yaml
- name: Upload GitHub Pages artifact
  uses: actions/upload-pages-artifact@v4
```

## Bereitstellen von GitHub Pages Artefakten

Die `deploy-pages` Aktion führt das erforderliche Setup zur Bereitstellung von Artefakten durch. Um die ordnungsgemäße Funktionalität sicherzustellen, müssen die folgenden Anforderungen erfüllt sein:

* Der Auftrag muss mindestens über die Berechtigungen `pages: write` und `id-token: write` verfügen.
* Der `needs`-Parameter muss auf den `id` des Buildschritts festgelegt werden. Wenn dieser Parameter nicht festgelegt wird, kann dies zu einer unabhängigen Bereitstellung führen, die kontinuierlich nach einem nicht erstellten Artefakt sucht.
* Ein `environment` muss eingerichtet werden, um Branch-/Bereitstellungsschutzregeln zu erzwingen. Die Standardumgebung ist `github-pages`.
* Verwende das Feld `url:`, um die URL der Seite als Ausgabe anzugeben.

Weitere Informationen finden Sie unter der Aktion [`deploy-pages`](https://github.com/marketplace/actions/deploy-github-pages-site).

```yaml
# ...

jobs:
  deploy:
    permissions:
      contents: read
      pages: write
      id-token: write
    runs-on: ubuntu-latest
    needs: jekyll-build
    environment:
      name: github-pages
      url: ${{steps.deployment.outputs.page_url}}
    steps:
      - name: Deploy artifact
        id: deployment
        uses: actions/deploy-pages@v4
# ...
```

## Verknüpfen getrennter Build- und Deploy-Aufträge

Du kannst deine `build`- und `deploy`-Aufträge in einer einzelnen Workflowdatei verknüpfen, sodass nicht mehr zwei separate Dateien erstellt werden müssen, um dasselbe Ergebnis zu erzielen. Für die ersten Schritte mit deiner Workflowdatei kannst du unter `jobs` einen `build`- und `deploy`-Auftrag definieren, um deine Aufträge auszuführen.

```yaml
# ...

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Build with Jekyll
        uses: actions/jekyll-build-pages@v1
        with:
          source: ./
          destination: ./_site
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v4

  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{steps.deployment.outputs.page_url}}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
# ...
```

In bestimmten Fällen entscheidest du dich ggf. dafür, alle Schritte in einem einzelnen Auftrag zu kombinieren, insbesondere wenn kein Buildprozess erforderlich ist. Folglich konzentrierst du dich ausschließlich auf den Bereitstellungsschritt.

```yaml
# ...

jobs:
  # Single deploy job no building
  deploy:
    environment:
      name: github-pages
      url: ${{steps.deployment.outputs.page_url}}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Upload Artifact
        uses: actions/upload-pages-artifact@v4
        with:
          # upload entire directory
          path: '.'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

# ...
```

Du kannst deine Aufträge so definieren, dass sie sequenziell oder parallel auf verschiedenen Runnern ausgeführt werden. Weitere Informationen finden Sie unter [Auswählen, was in dem Workflow passiert](/de/actions/how-tos/write-workflows/choose-what-workflows-do).