build-docs.yml 72 lignes · 1913 octets
# CI de build, lint et validation pour la documentation gitrust
# Déclenchée sur chaque push et pull request vers main

name: Build documentation

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    name: Build, lint et validation
    runs-on: ubuntu-latest

    steps:
      - name: Checkout du dépôt
        uses: actions/checkout@v4

      - name: Installer Rust (stable)
        uses: dtolnay/rust-toolchain@stable

      - name: Mettre en cache le registre Cargo
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            ~/.cargo/bin
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-cargo-

      - name: Installer mdbook
        run: |
          cargo install mdbook --locked --version "^0.4"

      - name: Installer mdbook-mermaid
        run: |
          cargo install mdbook-mermaid --locked

      - name: Construire la documentation (FR)
        run: mdbook build

      - name: Installer Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Installer markdownlint-cli2
        run: npm install -g markdownlint-cli2

      - name: Linter les fichiers Markdown
        run: markdownlint-cli2 "**/*.md" "#node_modules" "#book"

      - name: Installer mermaid-cli
        run: npm install -g @mermaid-js/mermaid-cli

      - name: Valider les diagrammes Mermaid
        run: |
          shopt -s nullglob
          mmd_files=(diagrams/*.mmd)
          if [ ${#mmd_files[@]} -eq 0 ]; then
            echo "Aucun fichier .mmd trouvé dans diagrams/ — étape ignorée."
            exit 0
          fi
          for f in "${mmd_files[@]}"; do
            echo "Validation de $f..."
            mmdc -i "$f" -o /tmp/out.svg
            echo "  OK"
          done