\usepackage{github-actions}

Compiler du LaTeX dans GitHub Actions

Automatisez la compilation LaTeX dans votre pipeline CI/CD. Chaque push compile vos documents, détecte les erreurs avant la fusion et publie les PDF sous forme d'artefacts téléchargeables, sans installation locale de TeX Live.

\section{Pourquoi le CI/CD pour LaTeX}

Livrez vos documents en toute confiance

Traitez vos sources LaTeX comme du logiciel. Les builds automatisés détectent les paquets défectueux, les fichiers manquants et les erreurs de compilation avant qu'ils n'atteignent vos lecteurs.

Ne livrez jamais de PDF défectueux

Détectez les erreurs de compilation avant la fusion. Les vérifications des pull requests échouent si le document ne compile pas.

Distribution automatisée

Les artefacts PDF sont joints à chaque exécution du workflow. Partagez un lien direct vers le dernier document compilé.

Aucun TeX Live local requis

Les membres de l'équipe contribuent aux sources LaTeX sans installer TeX Live. L'API gère la compilation dans le cloud.

\section{Prerequisites}

Avant de commencer

  • Compte FormaTeX : l'offre gratuite suffit (15 compilations/mois)
  • Une clé API FormaTeX depuis votre tableau de bord
  • Un dépôt GitHub contenant des fichiers .tex

\section{Guide pas à pas}

Configuration en quatre étapes

1

Obtenez votre clé API

Inscrivez-vous sur FormaTeX et copiez votre clé API depuis le tableau de bord. L'offre gratuite comprend 15 compilations par mois, ce qui suffit pour commencer.

2

Ajouter le secret à GitHub

Stockez votre clé API comme secret de dépôt pour qu'elle ne soit jamais exposée dans le YAML de votre workflow. Rendez-vous dans Repository → Settings → Secrets and variables → Actions → New secret et nommez-le FORMATEX_API_KEY.

# Add your FormaTeX API key as a GitHub Actions secret
# Go to: Repository → Settings → Secrets and variables → Actions → New secret
# Name: FORMATEX_API_KEY
# Value: your API key from formatex.io/dashboard/api-keys

# Test locally before committing:
export FORMATEX_API_KEY="your-key-here"
curl -X POST https://api.formatex.io/api/v1/compile \
  -H "X-API-Key: $FORMATEX_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"latex": "\\documentclass{article}\\begin{document}Hello\\end{document}", "engine": "pdflatex"}'
3

Créer le fichier de workflow

Créez .github/workflows/latex.yml dans votre dépôt. Ce workflow minimal compile main.tex et téléverse le PDF obtenu comme artefact.

# .github/workflows/latex.yml
name: Compile LaTeX

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

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

      - name: Compile LaTeX to PDF
        env:
          FORMATEX_API_KEY: ${{ secrets.FORMATEX_API_KEY }}
        run: |
          jq -n --rawfile latex main.tex '{engine: "xelatex", latex: $latex}' \
            | curl --fail-with-body -sS -X POST https://api.formatex.io/api/v1/compile \
                -H "X-API-Key: $FORMATEX_API_KEY" \
                -H "Content-Type: application/json" \
                -d @- -o output.pdf

      - name: Upload PDF artifact
        uses: actions/upload-artifact@v4
        with:
          name: compiled-pdf
          path: output.pdf
4

Pousser et regarder le build

Validez et poussez le fichier de workflow. GitHub Actions se déclenchera automatiquement à votre prochain push sur main. Ouvrez l'onglet Actions de votre dépôt pour voir le workflow s'exécuter. Une fois terminé, le PDF compilé apparaît sous Artifacts.

\section{Configuration complète du workflow}

Build en matrice avec gestion des erreurs

Passez à l'échelle sur plusieurs documents avec une stratégie en matrice. Ce workflow compile la thèse, la présentation et l'annexe en parallèle, capture explicitement les erreurs HTTP et conserve les PDF pendant 30 jours.

# .github/workflows/latex-full.yml
name: LaTeX Build Pipeline

on:
  push:
    paths: ['**.tex', '**.bib']

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        document: [thesis, presentation, appendix]

    steps:
      - uses: actions/checkout@v4

      - name: Compile ${{ matrix.document }}
        env:
          FORMATEX_API_KEY: ${{ secrets.FORMATEX_API_KEY }}
          DOC: ${{ matrix.document }}
        run: |
          jq -n --rawfile latex "$DOC.tex" '{engine: "xelatex", latex: $latex}' \
            | curl --fail-with-body -sS -X POST https://api.formatex.io/api/v1/compile \
                -H "X-API-Key: $FORMATEX_API_KEY" \
                -H "Content-Type: application/json" \
                -d @- -o "$DOC.pdf"

      - name: Upload PDFs
        uses: actions/upload-artifact@v4
        with:
          name: pdfs-${{ matrix.document }}
          path: ${{ matrix.document }}.pdf
          retention-days: 30

\section{Choix du moteur}

Choisissez votre moteur LaTeX

Passez un champ engine facultatif dans le corps JSON pour contrôler le compilateur utilisé par FormaTeX. La valeur par défaut est pdflatex si le champ est omis.

pdflatexxelatexlualatex

\section{Troubleshooting}

Problèmes courants et solutions

Clé API non définie

Vérifiez que FORMATEX_API_KEY est ajouté comme secret de dépôt, et non comme variable. Les secrets sont chiffrés, pas les variables. Allez dans Settings → Secrets and variables → Actions → Secrets (pas Variables).

Gros fichiers .tex

Pour les fichiers de plus de 10 Mo, utilisez le point de terminaison de compilation asynchrone (/api/v1/compile/async). Il renvoie un identifiant de tâche que vous pouvez interroger pour obtenir le résultat.

Paquets manquants

L'environnement isolé de FormaTeX inclut TeX Live 2023 complet : la plupart des paquets CTAN sont disponibles d'emblée. Si un paquet manque, contactez le support et nous l'ajouterons.

\section{Intégrations associées}

Utilisez FormaTeX depuis n'importe quel environnement

FormaTeX est une simple API HTTP. Des exemples à copier-coller pour chaque grand langage et chaque grande plateforme.

Prêt à automatiser vos builds LaTeX ?

Offre gratuite : 15 compilations par mois. Aucune carte bancaire requise.