Publier la documentation sur GitHub Pages
Cette page décrit le workflow GitHub Actions fourni pour publier automatiquement la documentation VitePress de QForm Builder Community sur GitHub Pages.
Objectif
URL cible :
https://vevedh.github.io/qform-builder-layer/La version anglaise est disponible sous :
https://vevedh.github.io/qform-builder-layer/en/Le projet contient une documentation VitePress dans le dossier :
/docsLe workflow ajouté construit cette documentation puis publie le dossier généré :
docs/.vitepress/distFichier ajouté
.github/workflows/docs.ymlLe workflow est déclenché :
- à chaque push sur
mainlorsquedocs/**,package.json,bun.lockou le workflow changent ; - manuellement depuis l’onglet Actions via
workflow_dispatch.
Configuration GitHub Pages
Dans le dépôt GitHub :
- ouvrir Settings ;
- ouvrir Pages ;
- dans Build and deployment ;
- choisir Source: GitHub Actions.
Ensuite, un push sur main lance automatiquement le déploiement.
Gestion automatique du base
Pour un site GitHub Pages de projet, l’URL ressemble souvent à :
https://<username>.github.io/<repository>/VitePress doit donc recevoir un base correspondant au nom du dépôt :
/<repository>/Le workflow définit automatiquement :
VITEPRESS_BASE: '/${{ github.event.repository.name }}/'Et la configuration VitePress lit cette variable :
const siteBase = process.env.VITEPRESS_BASE || '/'
export default defineConfig({
base: siteBase,
})Cela permet de garder :
base: '/'en développement local ;base: '/nom-du-repo/'pendant le build GitHub Pages.
Workflow fourni
name: Deploy VitePress docs to GitHub Pages
on:
push:
branches:
- main
paths:
- 'docs/**'
- 'scripts/**'
- '.github/workflows/docs.yml'
- 'package.json'
- 'README.md'
- 'bun.lock'
workflow_dispatch:
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: github-pages
cancel-in-progress: false
jobs:
build:
name: Build documentation
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.6
- name: Setup GitHub Pages
uses: actions/configure-pages@v6
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build VitePress documentation
run: bun run docs:build
env:
VITEPRESS_BASE: '/${{ github.event.repository.name }}/'
- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@v5
with:
path: docs/.vitepress/dist
deploy:
name: Deploy documentation
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v5Compatibilité Node.js 24
GitHub migre progressivement l’exécution des actions JavaScript de Node.js 20 vers Node.js 24. Le workflow anticipe cette migration avec :
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: 'true'Il utilise aussi actions/checkout@v6 et actions/configure-pages@v6 afin d’éviter les warnings de dépréciation liés aux anciennes versions basées sur Node.js 20. Le déploiement se relance quand la documentation, les scripts qui valident cette documentation, le workflow, le README, package.json ou bun.lock changent.
Test local
Avant de pousser :
bun install
bun run docs:build
bun run docs:previewPour simuler le base GitHub Pages sous Linux/macOS :
VITEPRESS_BASE=/qform-builder-layer/ bun run docs:buildSous PowerShell :
$env:VITEPRESS_BASE='/qform-builder-layer/'
bun run docs:build
Remove-Item Env:VITEPRESS_BASECas d’un domaine personnalisé
Si la documentation est publiée sur un domaine personnalisé, par exemple :
https://docs.example.com/il faut utiliser :
VITEPRESS_BASE: '/'Dans ce cas, adapte la variable dans le workflow ou ajoute une variable GitHub Actions dédiée.
Bonnes pratiques
- Lancer
bun run docs:i18n:checkavant chaque modification publiée de la documentation. - Maintenir une page anglaise sous
docs/en/pour chaque page française.
Garde le workflow de documentation séparé du workflow de publication npm. La documentation peut être déployée à chaque mise à jour de contenu, tandis que la publication npm doit rester liée à une version validée.