Skip to main content

Verwenden von benutzerdefinierten Workflows mit GitHub Pages

Du kannst GitHub Actions und GitHub Pages nutzen, indem du eine Workflowdatei erstellst oder einen der vordefinierten Workflows auswählst.

Wer kann dieses Feature verwenden?

GitHub Pages ist in öffentlichen Repositorys mit GitHub Free und GitHub Free für Organisationen sowie in öffentlichen und privaten Repositorys mit GitHub Pro, GitHub Team, GitHub Enterprise Cloud und GitHub Enterprise Server verfügbar. Weitere Informationen findest du unter GitHub-Pläne.

Informationen zu benutzerdefinierten Workflows

Benutzerdefinierte Workflows ermöglichen das Erstellen von GitHub Pages-Websites mithilfe von GitHub Actions. 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.

Konfigurieren der Aktion configure-pages

GitHub Actions ermöglicht die Verwendung von GitHub Pages über die Aktion configure-pages, mit der du auch verschiedene Metadaten zu einer Website sammeln kannst. Weitere Informationen findest du unter der Aktion configure-pages.

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

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

Diese Aktion unterstützt die Bereitstellung in GitHub Pages über jeden Generator für statische Websites. 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.

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 Datei vom Typ tar enthält. Die Datei vom Typ tar muss kleiner als 10 GB sein und darf keine symbolischen oder festen Links enthalten. Weitere Informationen findest du unter der Aktion upload-pages-artifact.

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

- name: Upload GitHub Pages artifact
  uses: actions/upload-pages-artifact@v3

Bereitstellen von GitHub Pages-Artefakten

Die Aktion deploy-pages führt das erforderliche Setup für die Bereitstellung von Artefakten aus. 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 Parameter needs muss auf die ID (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 findest du unter der Aktion deploy-pages.

# ...

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 separater Build- und Bereitstellungsaufträ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.

# ...

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - 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@v3

  # 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.

# ...

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@v4
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Upload Artifact
        uses: actions/upload-pages-artifact@v3
        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.