Le projet dispose d'une pipeline CD qui permet de build automatiquement l'application pour Linux, Windows et MacOS et de publier la release dès qu'un tag de version est poussé sur Github, ou sur intervention manuelle.

Voici le fichier de CD commenté:

name: publish

# Quand es-ce que le CD s'active
on:
  push:
    tags:
      # Tag de version
      - 'v*.*.*'
  # Activation manuelle
  workflow_dispatch:

jobs:
  build:
    permissions:
      contents: write

    strategy:
      fail-fast: false
      # Toutes les plateformes sur lesquelles build
      matrix:
        include:
          - platform: ubuntu-latest
          - platform: macos-latest
          - platform: windows-latest
    runs-on: ${{ matrix.platform }}

    steps:
      # Cloner le repo
      - uses: actions/checkout@v4

      # Installation de node (version lts)
      - name: setup node
        uses: actions/setup-node@v4
        with:
          node-version: lts/*

      # Installation de Python et des dépendances python du projet
      - name: setup python
        uses: actions/setup-python@v6
        with:
          python-version: '3.13'
          cache: 'pip'
          cache-dependency-path: backend/requirements.txt
      - run: pip install -r backend/requirements.txt

      # Installation de Rust
      - name: install Rust stable
        uses: dtolnay/rust-toolchain@stable

     # Installation des dépendances natives de Tauri (sur ubuntu uniquement)
      - name: install dependencies (ubuntu only)
        if: matrix.platform == 'ubuntu-latest'
        run: |
          sudo apt-get update
          sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf

      # Installation des dépendances javascript
      - name: install frontend dependencies
        run: npm install

      # Build du backend (compilation du python en un exécutable autonome)
      - name: build backend
        run: npm run build:backend

      # Sign that new executable
      - name: sign backend binary (macos only)
        if: matrix.platform == 'macos-latest'
        run: |
          for bin in build/dist/backend-*; do
            if [[ -f "$bin" && ! -L "$bin" ]]; then
              codesign --force --deep --sign - "$bin"
            fi
          done

      # Build the frontend (astro)
      - name: build frontend
        run: npm run build:frontend

      # Build et publish le projet final grâce à une action préfaite de Tauri
      - uses: tauri-apps/tauri-action@v0.6
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tagName: app-v__VERSION__
          releaseName: 'GlossAI v__VERSION__'
          releaseDraft: false
          prerelease: false