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.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video