Aller au contenu
  1. Posts/

Devbox et les environnements isolés

sykursen
50 Nuances d'Octets
Auteur
50 Nuances d’Octets
Moins de digital, plus de numérique 🛸
Auteur
Guillaume Assier
Tech, Cloud et Cybersécurité ⛅

Régulièrement, il m’arrive de télécharger des projets que je souhaite tester de github. Sauf qu’au moment de lancer le projet catastrophe je n’ai pas la bonne version du runtime utilisé par le dev du projet. Après m’être pas mal arraché les cheveux à installer la version exacte et avoir pourri la moitié de mon OS au passage, j’ai fini par trouver un moyen efficace d’isoler mes tests.

Mon sauveur, c’est devbox, un petit nouveau dans ma collection d’outils open source qui permet de créer des environnements isolés sans se prendre la tête, rien que ça.

Utilisation #

Initialisation #

Une fois installé sur notre machine (Linux ou Mac), rien de plus simple. Il suffit de se rendre dans le dossier du logiciel que l’on souhaite utiliser et de lancer la commande suivante.

devbox init

Devbox va ainsi créer un petit fichier json à la racine qui ressemblera à ça :

{
  "packages": [],
  "shell": {
    "init_hook": null
  },
  "nixpkgs": {
    "commit": "f80ac848e3d6f0c12c52758c0f25c10c97ca3b62"
  }
}

Manipulation des packages #

Ensuite, nous pouvons choisir quels paquets, l’on souhaite ajouter à notre espace isolé. Pour ça, devbox se base sur les paquets nix. On peut trouver leur nom en effectuant une recherche sur les dépots de nix.

devbox add [package]

Et enfin pour rentrer dans notre environnement.

devbox shell

Et c’est tout. Oui oui, vous avez bien entendu, c’est tout. Plus qu’à ajouter au dépôt git le devbox.json et toute votre équipe peut travailler avec le même environnement que vous. Même pas besoin de conteneur. 😜

Plus d’exemple dans leur documentation.

Dernière note, ils viennent de sortir un système en preview pour déployer ces environnements à distance. Je n’ai pas encore eu le temps de le tester, mais ça peut permettre de travailler sur des machines pas très puissantes sans se prendre la tête.