DocAnvil

Déploiement sur GitHub Pages

Ce guide met en place un workflow GitHub Actions qui compile votre documentation DocAnvil et la publie sur GitHub Pages à chaque push sur main. C'est la configuration utilisée par cette documentation.

Prérequis

Vous aurez besoin de :

Aucun secret ni jeton n'est nécessaire. Le workflow utilise les permissions Pages intégrées à GitHub.

Définir l'URL de base

La plupart des dépôts sont publiés en tant que site de projet à l'adresse https://<utilisateur>.github.io/<dépôt>/. Toutes les pages se trouvent sous /<dépôt>/, il faut donc l'indiquer à DocAnvil dans docanvil.toml :

[build]
base_url = "/mon-depot/"
site_url = "https://mon-utilisateur.github.io/mon-depot/"

Si vous publiez un site utilisateur ou d'organisation (un dépôt nommé <utilisateur>.github.io) ou utilisez un domaine personnalisé, le site est servi depuis la racine : gardez base_url = "/" et définissez site_url sur cette adresse.

Note

docanvil serve utilise toujours / comme URL de base et compile dans son propre dossier, donc les aperçus locaux fonctionnent quel que soit le base_url défini.

Configuration du workflow

Créez .github/workflows/docs.yml :

name: Publish docs

on:
  push:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: pages
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # Installe la dernière version de DocAnvil (somme de contrôle vérifiée)
      - name: Install DocAnvil
        run: curl -fsSL https://github.com/docanvil/docanvil/releases/latest/download/install.sh | DOCANVIL_INSTALL_DIR=/usr/local/bin sh

      - name: Build docs
        run: docanvil build --strict

      - uses: actions/upload-pages-artifact@v3
        with:
          path: dist

  deploy:
    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@v4

Quelques points à noter :

Adapter à la structure de votre projet

Le workflow ci-dessus suppose que docanvil.toml se trouve à la racine du dépôt. Si votre documentation est dans un sous-dossier, indiquez-le à la compilation et publiez la sortie de ce dossier :

      - name: Build docs
        run: docanvil build --strict --path docs

      - uses: actions/upload-pages-artifact@v3
        with:
          path: docs/dist

Pour ne publier que lorsque la documentation change, ajoutez un filtre de chemins au déclencheur :

on:
  push:
    branches: [main]
    paths:
      - "docs/**"
      - ".github/workflows/docs.yml"

Domaines personnalisés

Définissez le domaine dans Settings → Pages → Custom domain. Comme le workflow déploie un artefact plutôt qu'une branche, aucun fichier CNAME n'est nécessaire dans la sortie. Mettez ensuite à jour docanvil.toml pour que les liens soient construits pour la racine de votre domaine :

[build]
base_url = "/"
site_url = "https://docs.example.com/"

Ce qui se passe à chaque push

Lorsque vous poussez sur main :

  1. GitHub Actions récupère votre dépôt
  2. Le script d'installation télécharge la dernière version de DocAnvil depuis GitHub Releases et vérifie sa somme de contrôle
  3. docanvil build --strict compile le site dans dist/, et échoue si quelque chose doit être corrigé
  4. La sortie est envoyée comme artefact Pages puis déployée
  5. La nouvelle version est en ligne, généralement en moins d'une minute, à l'URL affichée sur l'exécution du workflow

Note

Le script d'installation récupère la dernière version stable à chaque fois. Si vous avez besoin de compilations reproductibles avec une version fixée, définissez aussi DOCANVIL_VERSION, par exemple DOCANVIL_INSTALL_DIR=/usr/local/bin DOCANVIL_VERSION=1.2.0 sh. Consultez Installation pour toutes les options d'installation.