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 findest du 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@v3
Diese Aktion unterstützt die Bereitstellung in GitHub Pages über jeden Generator für statische Websites. Um diesen Prozess weniger repetitiv zu gestalten, kannst du Startworkflows für einige der am häufigsten verwendeten Generatoren für statische Websites verwenden. Weitere Informationen findest du unter Verwenden von Startworkflows.
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@v1
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
undid-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 istgithub-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@v1
...
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@v3
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
# 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@v2
...
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@v3
- name: Upload Artifact
uses: actions/upload-pages-artifact@v2
with:
# upload entire directory
path: '.'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
...
Du kannst deine Aufträge so definieren, dass sie sequenziell oder parallel auf verschiedenen Runnern ausgeführt werden. Weitere Informationen findest du unter Verwenden von Aufträgen.