Ce fichier a réparé mon environnement de développement (Devbox)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Votre fichier readme vous ment, il dit que la configuration prend cinq minutes, puis Node est incorrect, Python est incorrect
00:00:07Postgres manque, Docker prend une éternité et nous voilà en train de déboguer avant même d'avoir commencé
00:00:13Votre environnement de développement ne devrait pas résider dans un readme, il devrait résider dans Git, c'est ce que fait Devbox
00:00:20Un fichier devbox.json, une commande "devbox shell", le même environnement pour chaque développeur sans aucune installation globale
00:00:28Et aucune connaissance de Nix requise, laissez-moi vous montrer
00:00:30Au début, Devbox semble presque trop simple : vous créez un devbox.json, vous listez les outils dont votre projet a besoin
00:00:42Node, Go, Python, Postgres, tout ce dont votre stack a réellement besoin, vous committez ce fichier, puis n'importe qui d'autre peut
00:00:50simplement exécuter "devbox shell" et ils obtiennent le même environnement que vous : mêmes versions, outils, scripts, pas d'installations globales
00:00:58pas de "veuillez d'abord installer ces huit choses", pas de dépendance à Homebrew datant d'il y a des années, votre configuration
00:01:03cesse d'exister dans la mémoire de quelqu'un, elle commence à vivre dans votre dépôt. Cela semble insignifiant, mais si vous avez
00:01:09déjà perdu une demi-journée à cause d'une configuration locale cassée, vous savez déjà que ce n'est pas insignifiant. Si vous aimez
00:01:16les outils de codage pour accélérer votre flux de travail, assurez-vous de vous abonner, nous publions des vidéos tout le temps
00:01:20Maintenant, nous commençons donc je vais débuter avec un projet vide, je vais créer un nouveau dossier
00:01:25que nous appellerons "devbox demo", nous entrons dans le dossier et tout ce qu'il faut faire une fois que nous avons Devbox, c'est exécuter
00:01:31"devbox init". Devbox crée un fichier appelé devbox.json, pour l'instant il est pratiquement vide, c'est juste le
00:01:39boilerplate que Devbox nous donne. Ajoutons maintenant les outils dont ce projet a réellement besoin, pour ajouter des outils, nous pouvons
00:01:45faire "devbox add" et je vais installer des choses comme Go, Node.js et un peu de Python. Et voici la
00:01:52partie importante : je n'installe pas ces outils globalement, je ne change pas mon Node système, je ne touche pas à mon Python
00:02:00système. Ces outils appartiennent à ce projet. Maintenant, quand j'exécute "devbox shell" et que je suis dans un environnement de projet propre
00:02:09maintenant que vous êtes dans cet environnement, vous pouvez simplement vérifier les versions : "go version", "node
00:02:14version", "python version", je peux tout vérifier pour m'assurer que ça fonctionne. C'est ça le gros avantage :
00:02:19le projet demandait des outils spécifiques, Devbox m'a donné ces outils. Ajoutons maintenant un script, et à l'intérieur de devbox.json
00:02:27nous pouvons définir un test, je vais simplement afficher "running tests" et je vais obtenir la version de Node
00:02:34et celle de Go. Quand vous exécutez "devbox run test", cette même commande fonctionne pour toute personne utilisant ce dépôt
00:02:42Mêmes scripts, mêmes outils, même environnement. Maintenant, regardez ce qui se passe quand je quitte, vous pouvez simplement faire "exit"
00:02:48vous quittez cet environnement et je suis de retour à mon environnement machine habituel. C'était simple
00:02:53comme bonjour, non ? Qu'est-ce que Devbox fait réellement ? Eh bien, Devbox utilise Nix en sous-main. Nix est génial car
00:03:00il est conçu pour la reproductibilité. Au lieu de dire "installe tout ce qui se trouve être la dernière version aujourd'hui",
00:03:06il peut épingler les outils exacts dont votre projet a besoin. C'est la bonne partie, la partie difficile est
00:03:12que Nix peut sembler être un tout nouveau monde. Il y a beaucoup de concepts qui sont géniaux mais pas exactement
00:03:18amicaux quand tout ce que vous vouliez, c'était la bonne version de Node. Devbox nous montre quelque chose de différent
00:03:23Ici, on se dit : "Et si on gardait la reproductibilité mais qu'on rendait le flux de travail normal ?". Alors au lieu de
00:03:29rédiger des expressions Nix, vous pouvez utiliser des commandes comme "devbox add", "devbox search", "shell", "run", "services". Toutes
00:03:37ces commandes sont beaucoup plus simples et votre projet obtient deux fichiers importants : un fichier json et un
00:03:44fichier lock. Considérez devbox.json comme ce dont notre environnement a besoin, et le fichier devbox.lock comme l'épingle pour verrouiller
00:03:52exactement ce que vous avez. Vous committez les deux, et maintenant votre environnement n'est plus juste un paragraphe dans un fichier readme,
00:03:58c'est une partie intégrante du projet. Devbox fonctionne sur macOS, Linux et WSL, il peut s'intégrer avec VS Code, il peut
00:04:06définir des scripts, il peut gérer des services comme des bases de données, et quand vous en avez besoin, il peut exporter vers des choses comme
00:04:12Docker, des dev containers et des workflows CI. La valeur de tout ça, ce n'est pas juste "un outil cool", c'est un outil très simple. La
00:04:19valeur, je pense, c'est juste le temps. Le premier problème, c'est le readme, n'est-ce pas ? Le readme pourrait dire n'importe quoi, il
00:04:26pourrait dire "installez Node 18" alors que l'application a changé et a vraiment besoin de Node 20. Le deuxième problème
00:04:32que cela aide vraiment à résoudre, c'est l'onboarding. C'est votre premier jour de travail, ça devrait être facile de s'y mettre,
00:04:37nous savons que ce n'est pas le cas. Vous ne devriez pas avoir à demander "quelle version de Node me faut-il ?", vous ne devriez pas
00:04:43avoir à envoyer un ping à quelqu'un : "Hé, quelle version de Python utilise-t-on ? Ai-je vraiment besoin de Postgres localement ? Et pourquoi ça
00:04:48ne fonctionne que pour le petit Timmy là-bas ?". Ils devraient juste avoir à cloner le dépôt, entrer dans le shell
00:04:52et lancer le projet. Si quelque chose casse, au moins tout le monde part du même environnement. Le problème,
00:04:58c'est la pollution globale. Essayer des outils ne devrait pas bousiller votre ordinateur. Vous voulez Go 1.22 pour ce dépôt, vous l'ajoutez, vous
00:05:06voulez Node 20 ici mais autre chose ailleurs, très bien, c'est bon. Les outils vivent avec le projet, votre
00:05:13système reste plus propre. Avec Devbox, votre définition d'environnement peut être partagée entre le développement local
00:05:18et l'automatisation. Est-ce que ça règle tous les problèmes de CI ? Non, ça ne le fera pas, mais ça élimine une grande catégorie de problèmes
00:05:26bêtes, et les problèmes bêtes sont ceux qui nous font le plus mal. Ils sont simples, nous les avons tout le
00:05:32temps. Enfin, voici Docker, un flux de travail Docker local lourd plus spécifiquement. Docker est toujours génial si
00:05:40vous avez besoin de conteneurs, utilisez des conteneurs, mais beaucoup d'équipes utilisent Docker localement parce qu'elles n'ont pas de meilleur
00:05:46moyen de gérer leurs outils. Maintenant, ce qui est bien ici, c'est que le workflow est super simple : "devbox add", "shell", "run". Vous
00:05:52n'avez pas besoin d'apprendre grand-chose. L'environnement devient une vraie partie de votre projet, un vrai fichier
00:05:57dans le dépôt. Quand tout le monde utilise les mêmes versions et scripts, le débogage devient plus facile. Mais c'est génial,
00:06:03super simple. Ce qui va vous ennuyer, c'est, eh bien, le premier téléchargement de Nix, ça a pris un peu de temps à télécharger,
00:06:09c'est bien, c'est la première fois. OK, JSON est simple mais ça peut devenir moche, comme on le sait, si on en met trop
00:06:15dedans. Pour des scripts de base c'est bien, mais pour une logique de configuration complexe, ne fourrez pas une commande shell géante dans le JSON,
00:06:22mettez juste la logique dans un fichier .sh, puis appelez-le depuis Devbox. Et enfin, Devbox n'est pas un IDE cloud complet :
00:06:30si vous avez besoin de coder dans le navigateur, d'URLs de prévisualisation instantanée, vous voudrez peut-être toujours quelque chose comme Codespaces.
00:06:36Devbox est le meilleur pour la reproductibilité locale et CI. Devbox ne va pas résoudre tous les problèmes de développement,
00:06:42mais il peut résoudre ceux qui nous ennuient le plus, c'est-à-dire simplement arriver à faire fonctionner le projet.
00:06:46Donc ça pourrait valoir le coup d'essayer, surtout si votre projet a plus d'un langage ou plus de
00:06:51un outil CLI. Si vous aimez des outils de codage comme celui-ci, assurez-vous de vous abonner à la chaîne Better Stack, nous
00:06:56nous reverrons dans une autre vidéo.

Key Takeaway

Devbox remplace la documentation manuelle des environnements de développement par une configuration déclarative via des fichiers Git, garantissant que chaque membre d'une équipe utilise les mêmes versions d'outils et scripts, peu importe la machine.

Highlights

  • Devbox intègre l'environnement de développement directement dans le dépôt Git au lieu de dépendre d'un fichier README manuel.

  • La commande 'devbox shell' permet d'utiliser des outils spécifiques à un projet sans installations globales ni dépendances Homebrew.

  • Devbox utilise Nix en arrière-plan pour assurer une reproductibilité exacte des versions des outils entre les développeurs.

  • L'utilisation de deux fichiers, devbox.json et devbox.lock, permet de verrouiller et partager les dépendances nécessaires au projet.

  • Le passage de la configuration locale à Devbox permet d'éliminer les erreurs de configuration liées aux versions d'outils disparates entre les machines.

Timeline

Limitations des README et introduction à Devbox

  • Les fichiers README deviennent souvent obsolètes et causent des erreurs de configuration.
  • Devbox déplace la gestion de l'environnement du document textuel vers le dépôt de code.
  • Aucune connaissance approfondie de Nix n'est nécessaire pour utiliser Devbox.

Les environnements de développement basés sur des README manuels mènent fréquemment à des erreurs liées aux versions de Node, Python, Postgres ou Docker. Devbox résout ce problème en intégrant la définition de l'environnement directement dans le dépôt Git. Cela permet d'obtenir un environnement identique pour chaque développeur sans installations globales complexes.

Configuration et usage pratique de Devbox

  • La commande 'devbox init' génère un fichier de configuration devbox.json.
  • Des outils comme Go, Node.js ou Python sont ajoutés au projet via 'devbox add' sans modifier les versions système.
  • La commande 'devbox run' permet de définir et d'exécuter des scripts de projet standardisés pour tous les utilisateurs.

Le flux de travail consiste à initialiser le projet, ajouter les dépendances spécifiques, et exécuter 'devbox shell' pour entrer dans un environnement isolé. Ce processus garantit que les outils appartiennent au projet et non à la machine hôte. Il est possible de définir des scripts dans le JSON pour assurer que des tâches comme les tests s'exécutent de la même manière pour tout le monde.

Fonctionnement technique et avantages

  • Nix assure la reproductibilité en épinglant les versions exactes des outils.
  • Devbox propose une interface simplifiée par-dessus Nix, utilisant des fichiers json et lock.
  • L'outil permet de gérer des services, des scripts et s'intègre avec Docker et des workflows CI.

Devbox s'appuie sur la technologie de Nix pour garantir la reproductibilité, tout en simplifiant drastiquement le flux de travail habituel. Il aide à résoudre les problèmes d'onboarding lors de l'arrivée de nouveaux membres dans une équipe et prévient la pollution globale des systèmes locaux. Bien qu'il ne remplace pas un IDE cloud complet comme Codespaces, il est optimisé pour la cohérence entre le développement local et l'automatisation CI.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video