Aller au contenu

Integration équipe

Partager les versions de l'équipe et assurer la cohérence entre développement local et CI.


Commiter le fichier de versions

Le fichier .tool-versions (ou mise.toml) est commite dans Git :

git add .tool-versions
git commit -m "chore: pin node 20.11.0, python 3.12.1"

Chaque développeur qui clone le dépôt obtient les mêmes versions :

git clone https://github.com/equipe/projet.git
cd projet
mise install   # Installe toutes les versions du .tool-versions

Pinning de versions

Format Exemple Comportement
Exact node 20.11.0 Toujours cette version (recommande)
Majeure node 20 Dernière 20.x.x installee
LTS node lts Dernière LTS
Latest node latest Dernière version stable

Eviter latest et lts en production

latest et lts changent dans le temps. Deux développeurs qui font mise install a des dates différentes auront des versions différentes. Utilisez des versions exactes.

Integration CI

GitHub Actions

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]

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

      - name: Install mise
        uses: jdx/mise-action@v2

      - name: Install dependencies
        run: npm install

      - name: Run tests
        run: npm test

Gitea Actions

# .gitea/workflows/ci.yml
name: CI
on: [push]

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

      - name: Install mise
        run: |
          curl https://mise.run | sh
          echo "$HOME/.local/bin" >> $GITHUB_PATH
          mise install

      - name: Run tests
        run: |
          eval "$(mise activate bash)"
          npm test

Vérification de cohérence

Ajouter un check dans la CI pour vérifier que les versions sont coherentes :

      - name: Verify tool versions
        run: |
          eval "$(mise activate bash)"
          echo "Node: $(node --version)"
          echo "Python: $(python --version)"
          mise ls

Cohérence locale/CI

Le même .tool-versions est lu en local et en CI. La cohérence est automatique si :

  1. Le fichier est commite dans Git
  2. La CI utilise mise pour installer les runtimes
  3. Les versions sont exactes (pas latest)
graph LR
    A[".tool-versions<br>node 20.11.0"] --> B["Poste dev<br>mise install"]
    A --> C["CI<br>mise install"]
    B --> D["node 20.11.0"]
    C --> D

Onboarding

Ajouter mise au script de bootstrap de l'équipe (voir Terminal) :

# Dans bootstrap.sh
# Installer mise
curl https://mise.run | sh
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc

# Installer les runtimes du projet
cd ~/projets/mon-projet
mise install