Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Wrkflw - Testez vos GitHub Actions en local avant de casser la prod

Hier soir, j’ai découvert un outil qui m’aurait évité des dizaines de commits “fix CI”, “fix CI again”, “please work this time” sur GitHub. J’sais pas si vous aussi vous connaissez cette galère ? Vous modifiez votre workflow GitHub Actions, vous poussez, ça plante, vous corrigez, vous repoussez, ça replante… Bref, votre historique Git ressemble à un journal de débugging en temps réel.

Et heureusement, wrkflw vient mettre fin à ce cauchemar.

Ce petit outil codé en Rust vous permet en fait de valider et d’exécuter vos GitHub Actions directement sur votre machine, sans avoir besoin de pusher quoi que ce soit. L’outil vient d’être annoncé sur le forum Rust et ça va bien aider tout le monde je pense.

Grâce à lui, au lieu de tester vos workflows dans le cloud GitHub (et potentiellement faire planter votre CI/CD devant toute l’équipe… La te-hon…), vous les exécutez localement. Wrkflw parse alors votre fichier YAML, résout les dépendances entre jobs, et lance tout ça soit dans Docker/Podman pour matcher l’environnement GitHub, soit en mode émulation si vous n’avez pas de runtime container sous la main.

Ce qui rend wrkflw vraiment pratique, c’est son interface TUI (Terminal User Interface) qui vous permet de visualiser l’exécution en temps réel. Un simple wrkflw tui et vous avez un dashboard interactif où vous pouvez suivre vos jobs, voir les logs, et comprendre ce qui foire sans avoir à jongler entre 15 onglets GitHub.

L’installation se fait en deux secondes si vous avez Rust :

cargo install wrkflw

Le package est aussi dispo sur crates.io et une fois installé, vous pouvez valider un workflow avec la commande :

wrkflw validate .github/workflows/rust.yml

ou le lancer directement avec

wrkflw run .github/workflows/ci.yml

L’outil détectera automatiquement tous vos workflows et les chargera dans l’interface.

Ce qui est fort avec wrkflow, c’est surtout le support quasi-complet des fonctionnalités de GitHub Actions. Les Matrix builds ? Ça passe ! Les Container actions ? Bah ouais, pas de problème ! Tout ce qui est JavaScript actions ? Check ! Même chose pour les Composite actions et les workflows réutilisables et même les fichiers d’environnement GitHub sont supportés. Bon, il y a quelques limitations évidemment. Vous ne pouvez pas par exemple mettre de secrets GitHub (ce qui est logique), et y’a pas de support Windows/macOS runners, ni pas d’upload/download d’artifacts. Mais pour 90% des cas d’usage, c’est largement suffisant.

Wrkflw s’inscrit dans une tendance plus large d’outils qui cherchent à remplacer Make et ses Makefiles cryptiques. Je pense par exemple à Task (Taskfile) qui est un autre exemple populaire, écrit en Go avec une syntaxe YAML plus moderne ou encore à Act, un autre outil open source qui fait à peu près pareil. Les développeurs cherchent clairement des alternatives plus lisibles et maintenables et wrkflw va encore plus loin en se spécialisant sur GitHub Actions.

Le mode Docker/Podman de wrkflw permet par exemple de créer des containers qui matchent au plus près l’environnement des runners GitHub. Et si jamais vous interrompez l’exécution avec Ctrl+C, pas de panique, puisque l’outil nettoie automatiquement tous les containers créés. Comme ça, y’aura plus de containers zombies qui traînent après vos tests.

Et pour tous ceux qui bossent en mode émulation sécurisée (sans Docker), wrkflw exécute les actions dans un environnement sandboxé. C’est moins fidèle à l’environnement GitHub mais au moins ça permet de tester rapidement sans avoir besoin d’installer Docker. Pratique sur des machines de dev légères ou des environnements restrictifs.

Le workflow de test devient donc le suivant : 1/ Vous modifiez votre YAML. 2/ Vous lancez wrkflw run . 3/ Vus voyez immédiatement si ça marche. 4/ Vous corrigez si besoin. 5/ Et c’est seulement ensuite que vous poussez sur GitHub. Plus de commits de debug, plus de CI cassée, plus de collègues qui râlent parce que la pipeline est tout rouge ^^.

L’outil est encore jeune bien sûr mais déjà très prometteur. Les prochaines versions devraient ajouter le support des secrets locaux, une meilleure intégration avec GitLab CI, et peut-être même le support des runners Windows/macOS.

Bref, si vous gérez des workflows GitHub Actions complexes, wrkflw va rapidement devenir indispensable à votre life.

A découvrir ici !

SSHRC - L'outil malin pour retrouver vos dotfiles en SSH

Si vous êtes du genre à passer votre vie en SSH sur des serveurs distants comme moi, alors voici un petit outil bien sympa qui va peut-être changer votre façon de bosser. Cela s’appelle sshrc et au début, j’ai cru à une énième tentative de réinventer la roue, mais en fait non. Ce truc est vraiment cool car quand vous vous connectez en SSH, il copie automatiquement votre configuration locale dans un dossier temporaire sur le serveur distant. Comme ça, vous retrouvez instantanément vos alias bash, vos raccourcis vim, votre prompt avec ses jolies couleurs…etc. Tout ce qui fait que vous vous sentez chez vous… mais sur votre serveur.

Le truc vraiment cool, c’est que ça ne pollue pas le serveur car tout est stocké dans /tmp dans un dossier propre à votre session. Si d’autres utilisateurs se connectent (même avec sshrc), ils auront leurs propres configs et pas les vôtres.

Pour l’installer, rien de plus simple. Sous macOS avec Homebrew :

brew install sshrc

Sous Ubuntu, il y a un PPA dédié :

sudo add-apt-repository ppa:russell-s-stewart/ppa
sudo apt-get update
sudo apt-get install sshrc

Pour les autres systèmes, vous pouvez récupérer le script directement depuis le repo GitHub.

Une fois installé, créez un fichier ~/.sshrc avec vos configs préférées. Par exemple, vous pouvez mettre vos alias les plus utiles, quelques fonctions bash, et même des variables d’environnement spécifiques.

Ensuite, au lieu de taper ssh user@server, vous faites sshrc user@server et c’est tout. Derrière, l’outil fait sa magie noire en compressant vos configurations, en les envoyant sur le serveur, puis en les décompressant dans /tmp, et en sourçant le tout automatiquement. Vous pouvez même avoir des configurations différentes selon les serveurs en créant des fichiers comme ~/.sshrc.d/servername.

Pour les fans de vim, il y a une astuce sympa. Ajoutez cette ligne dans votre ~/.sshrc :

export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC"

Et placez votre .vimrc dans ~/.sshrc.d/. Comme ça, vim utilisera votre config perso même sur le serveur distant.

Attention quand même, il y a une limite. Si votre dossier ~/.sshrc.d fait plus de 64KB, certains serveurs peuvent bloquer la connexion. C’est pour ça qu’une alternative existe : SSHdot. Cette variante n’a pas de limite de taille et fonctionne exactement pareil. C’est pratique si vous avez une config vim bien chargée avec plein de plugins.

D’ailleurs, pour ceux qui préfèrent une approche différente, il y a aussi la méthode git. Vous mettez tous vos dotfiles dans un repo, et vous configurez vos serveurs pour pull automatiquement à la connexion. C’est plus lourd à mettre en place mais ça scale mieux si vous gérez beaucoup de machines.

Un dernier truc sympa, sshrc fonctionne aussi avec tmux. Vous pouvez donc configurer tmux pour qu’il utilise vos raccourcis habituels même sur le serveur distant. Il suffit d’ajouter votre .tmux.conf dans ~/.sshrc.d et de définir un alias dans ~/.sshrc qui pointe vers cette config.

Au final, sshrc vous n’en aviez pas besoin, mais maintenant que vous savez qu’il existe, c’est un incontournable ! Bref, si vous en avez marre de retrouver un environnement spartiate à chaque connexion SSH, essayez-le, ça prend 2 minutes à installer et ça change vraiment la donne niveau confort de travail.

Quand Claude Code pilote votre terminal...

Il y a des moments où on tombe sur une approche si simple et efficace qu’on se demande pourquoi on n’y avait pas pensé avant. C’est exactement ce que j’ai ressenti en découvrant la technique d’Armin Ronacher pour donner à Claude Code le contrôle total d’une session de debugging.

Le principe c’est de combiner GNU Screen, ce vieux multiplexeur de terminal que certains considèrent comme dépassé, avec LLDB, le debugger de LLVM, pour créer un environnement où Claude peut littéralement piloter votre terminal comme s’il était assis devant votre clavier.

Comme ça, au lieu d’implémenter des serveurs MCP complexes ou des intégrations cheloues, Ronacher s’appuie sur des outils qui existent depuis des décennies. GNU Screen permet de multiplexer un terminal physique entre plusieurs processus, créant des sessions persistantes qui survivent aux déconnexions SSH. C’est cette persistance qui devient la clé de voûte du système.

Dans sa démonstration vidéo, Ronacher montre donc comment il configure Claude Code pour automatiser complètement une session de debugging. Le secret tient dans quelques lignes ajoutées au fichier CLAUDE.md : “définir un nom de session Screen spécifique pour le debugging, utiliser la syntaxe “dollar string” pour envoyer des commandes, et fermer proprement la session une fois terminé”.

Claude peut alors créer la session, lancer LLDB, identifier un bug de type segfault, le corriger, recompiler le code et vérifier que tout fonctionne. Le tout sans intervention humaine.

Comme le souligne Ronacher dans ses recommandations, Claude Code excelle quand on lui donne accès à des outils bien documentés qu’il connaît déjà. Screen et LLDB font partie de ces outils sur lesquels il existe une montagne de documentation et d’exemples donc Claude peut les manipuler avec aisance. En tout cas, beaucoup plus que moi, c’est certain !

Mais au-delà du debugging, cette technique ouvre des perspectives fascinantes pour l’automatisation. On pourrait imaginer un Claude gérant vos sessions tmux pour orchestrer des déploiements multi-serveurs, surveillant des logs en temps réel via Screen pour détecter des anomalies, ou même maintenant des connexions SSH persistantes vers des serveurs pour des interventions d’urgence. J’avoue c’est toujours prendre un risque donc à éviter sur de la prod, mais c’est très cool quand même.

Surtout que les sessions Screen continuent de fonctionner même quand la fenêtre n’est pas visible. C’est ça qui permet à Claude de maintenir des processus longs sans monopoliser votre terminal.

Si vous faites du DevOps, vous pourriez configurer Claude pour qu’il lance automatiquement des sessions Screen lors de debugging de containers Docker, maintienne des tunnels SSH persistants pour du debugging à distance de Kubernetes, ou même gère des sessions de monitoring avec des dashboards textuels comme htop ou glances. La combinaison de la persistance de Screen et de l’intelligence de Claude crée un assistant capable de gérer des workflows complexes de manière autonome.

C’est vrai que Screen est souvent considéré comme obsolète face à tmux, mais dans ce cas précis, sa simplicité devient un avantage car Claude a probablement plus de données d’entraînement sur Screen, qui existe depuis 1987, que sur des alternatives plus modernes. Donc c’est smooooth pour lui…

Un autre cas d’usage intéressant serait la gestion de sessions de développement complexes durant lesquelles Claude pourrait maintenir plusieurs fenêtres Screen avec différents environnements : une pour les tests, une pour le serveur de développement, une pour les logs, et naviguer entre elles selon les besoins. Vous pourriez ainsi demander à Claude de lancer les tests et de vous montrer les logs en cas d’échec, et il orchestrerait tout via Screen.

Pour les équipes, cette technique pourrait vraiment renforcer le pair programming à distance…. Vous partagez une session Screen avec Claude et un collègue simultanément et Claude pourrait vous assister en temps réel, suggérer des corrections, exécuter des commandes de diagnostic, pendant que vous discutez de l’architecture avec votre collègue avec un petit kawa. C’est comme avoir un 3e collègue expert toujours dispo.

Pas besoin d’API, de webhooks, ou de services cloud… Juste des outils Unix standard que tout développeur a déjà sur sa machine et un bon prompt et hop ça fait des chocapics (ou plus de bugs…^^) !

Bref, parfois les solutions les plus belles sont aussi les plus simples. Pas besoin de réinventer la roue…

Managing container networks in Windows Server 2025

Windows Server 2025 can run Windows and Hyper-V containers. The former share resources like the kernel with the host OS and have process-level isolation, while the latter run in virtual machines. To enable communication between containers and with physical systems, you must configure the network accordingly.

Source

METR study: Is AI-assisted coding overhyped?

A new study by METR got a lot of attention online. It claims that developers often overestimate the productivity boost from AI tools. In a coding test, the researchers found that AI caused a 19% "slowdown" for developers. In my opinion, it's not AI coding that's overhyped, but rather the study's findings.

Source

Install Apple Container CLI: Running containers natively on macOS 15 (Sequoia) and macOS 26 (Tahoe)

In my previous article, I introduced Apple's new Containerization solution for macOS and compared it with Docker Desktop. In today's post, I'll explain how to install Apple’s new Container CLI—a Swift‑based, open‑source tool—for running OCI‑compliant Linux containers on your Mac. Native container support will launch in macOS 26 (Tahoe), but you can install and utilize the Container CLI on macOS 15 with certain limitations. In the step‑by‑step guide, I will explain how to install, configure, and start running containers with Apple’s fresh alternative to Docker Desktop.

Source

❌