Aller au contenu

Integration équipe

Versionner et partager les dotfiles pour que chaque membre de l'équipe ait un shell productif des le premier jour.


Le problème

Chaque développeur a sa propre configuration shell. Sans standardisation :

  • L'onboarding prend des heures de configuration manuelle
  • Les aliases et conventions divergent entre les postes
  • Un poste reformate = tout reconfigurer

Dotfiles versionnes

Le principe : stocker les fichiers de configuration dans un dépôt Git et les lier vers leur emplacement attendu.

Avec chezmoi (recommande)

chezmoi est un gestionnaire de dotfiles qui gère les différences entre machines (OS, hostname) :

# Installation
brew install chezmoi

# Initialiser
chezmoi init

# Ajouter un fichier de config
chezmoi add ~/.zshrc
chezmoi add ~/.config/starship.toml
chezmoi add ~/.gitconfig

# Editer un fichier gere
chezmoi edit ~/.zshrc

# Appliquer les changements
chezmoi apply

# Versionner
chezmoi cd  # ouvre le depot chezmoi
git add -A && git commit -m "update zshrc"
git push

Sur une nouvelle machine :

chezmoi init --apply https://github.com/user/dotfiles.git

Avec GNU Stow (alternative simple)

# Structure du depot
dotfiles/
├── zsh/
   └── .zshrc
├── git/
   └── .gitconfig
└── starship/
    └── .config/
        └── starship.toml

# Lier tout
cd ~/dotfiles
stow zsh git starship

Configuration d'équipe partagee

Séparer la configuration en deux niveaux :

Fichier Portee Contenu
.zshrc.team Équipe (commite dans le dépôt du projet ou un dépôt d'équipe) Aliases standards, conventions, plugins obligatoires
.zshrc Personnel Source .zshrc.team + ajouts personnels
# .zshrc.team — commite dans le depot d'equipe
# Aliases d'equipe standardises
alias dc="docker compose"
alias k="kubectl"
alias tf="tofu"

# Conventions
export EDITOR="code --wait"

# Outils requis (verification)
for cmd in git docker code rg fzf; do
  command -v $cmd &>/dev/null || echo "⚠ $cmd non installe"
done
# .zshrc personnel — source la config d'equipe
source ~/equipe/dotfiles/.zshrc.team

# Ajouts personnels
alias vim="nvim"

Bootstrap d'un poste

Script d'installation pour un nouveau poste :

#!/bin/bash
# bootstrap.sh — setup initial d'un poste de dev
set -euo pipefail

echo "=== Installation des outils ==="

# Detecter l'OS
case "$(uname -s)" in
  Darwin) PKG="brew install" ;;
  Linux)  PKG="sudo apt install -y" ;;
esac

# Outils essentiels
$PKG git curl wget jq

# Shell
$PKG zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

# Outils modernes
$PKG bat eza ripgrep fd fzf zoxide

# Prompt
$PKG starship

# Dotfiles
chezmoi init --apply https://github.com/equipe/dotfiles.git

echo "=== Bootstrap termine ==="
echo "Redemarrer le terminal pour appliquer les changements."

Conventions de nommage

Convention Exemple Justification
Aliases en 1-3 lettres k, dc, tf Rapidite
Fonctions en snake_case mkcd, git_clean_branches Lisibilite
Variables d'env en UPPER_CASE $EDITOR, $PROJECT_ROOT Convention POSIX
Fichiers de config avec préfixe . .zshrc, .gitconfig Convention Unix