- Startseite
- Theme
- Build-Pipeline
Build-Pipeline
Diese Seite beschreibt, wie Content-Repositories das npm-Paket @f5-sales-demo/docs-theme konsumieren, um vollständig gebrandete Dokumentationsseiten zu erstellen.
Architektur
Abschnitt betitelt „Architektur“┌─────────────────┐│ Content Repo ││ (docs/ folder) │└────────┬────────┘ │ ▼┌───────────────────────────┐│ f5xc-docs-builder ││ (Docker image) ││ ││ npm install ││ @f5-sales-demo/docs-theme ─────┐ ││ ▼ ││ node_modules/ ││ @f5-sales-demo/docs-theme/ ││ ├── config.ts ││ ├── index.ts ││ ├── fonts/ ││ ├── styles/ ││ ├── assets/ ││ └── components/ ││ ││ Astro Build │└─────────────┬─────────────┘ ▼┌───────────────────────────┐│ Astro Build Output ││ (static HTML/CSS) │└─────────────┬─────────────┘ ▼┌───────────────────────────┐│ GitHub Pages │└───────────────────────────┘Build-Prozess Schritt für Schritt
Abschnitt betitelt „Build-Prozess Schritt für Schritt“- Push ins Content-Repo — ein Push auf
main(oder ein manueller Dispatch) löst den GitHub Pages Deploy-Workflow aus - Wiederverwendbarer Workflow — der Workflow des Content-Repos ruft den Builder auf:
jobs:docs:uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@main
- Docker-Builder wird ausgeführt — das Docker-Image
f5xc-docs-builderhat das Theme bereits über npm vorinstalliert. Zur Build-Zeit wird Folgendes ausgeführt:- Kopiert
astro.config.mjsundcontent.config.tsausnode_modules/@f5-sales-demo/docs-theme/in das Astro-Projektstammverzeichnis - Kopiert die
docs/-Dateien des Content-Repos nachsrc/content/docs/
- Kopiert
- Astro-Build — Astro liest die Konfiguration, die
createF5xcDocsConfig()aufruft. Die Factory löst alle Theme-Assets über npm-Paket-Spezifikatoren auf (z. B.@f5-sales-demo/docs-theme/styles/custom.css) - Deployment — die erstellte statische Website wird auf GitHub Pages bereitgestellt
Anforderungen an das Content-Repo
Abschnitt betitelt „Anforderungen an das Content-Repo“Ein Content-Repository benötigt lediglich:
- Ein
docs/-Verzeichnis mit Markdown-Dateien (.md) oder MDX-Dateien (.mdx) - Einen GitHub Actions-Workflow, der den Builder aufruft
Minimaler Workflow
Abschnitt betitelt „Minimaler Workflow“name: GitHub Pages Deployon: push: branches: [main] workflow_dispatch:
permissions: contents: read pages: write id-token: write
concurrency: group: pages cancel-in-progress: true
jobs: docs: uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@mainDies ist derselbe Workflow, den dieses Theme-Repository selbst verwendet, um die Dokumentation zu erstellen, die Sie gerade lesen.
Pfadauflösung
Abschnitt betitelt „Pfadauflösung“Alle Pfade im Theme verwenden npm-Paket-Spezifikatoren, die über die exports-Zuordnung in package.json aufgelöst werden:
// CSS — resolved from node_modules'@f5-sales-demo/docs-theme/fonts/font-face.css''@f5-sales-demo/docs-theme/styles/custom.css'
// Components — resolved from node_modules'@f5-sales-demo/docs-theme/components/Footer.astro''@f5-sales-demo/docs-theme/components/Banner.astro'
// Assets — resolved from node_modules'@f5-sales-demo/docs-theme/assets/github-avatar.png'Im Build-Workspace gibt es kein ./theme/-Verzeichnis. Der Docker-Builder installiert das Theme als reguläre npm-Abhängigkeit, und Astro löst alle Spezifikatoren über node_modules auf.
Weitergabe von Änderungen
Abschnitt betitelt „Weitergabe von Änderungen“Theme-Änderungen werden über npm-Paketaktualisierungen weitergegeben:
- Eine Änderung wird in
@f5-sales-demo/docs-themeinmainzusammengeführt - Das Docker-Builder-Image wird mit dem aktualisierten Paket neu erstellt
- Beim nächsten Ausführen des Workflows eines Content-Repos wird das aktualisierte Builder-Image verwendet
- Der Astro-Build übernimmt die aktualisierten Schriftarten, Stile, Logos, Komponenten und Plugins
- Die Website des Content-Repos wird mit dem neuen Theme bereitgestellt
Content-Repos erhalten stets das neueste Theme, das im Docker-Image gebündelt ist. Dies gewährleistet eine einheitliche visuelle Darstellung auf allen Websites, bedeutet jedoch, dass Theme-Änderungen vor dem Zusammenführen sorgfältig getestet werden sollten.