Dagger un nouvel outil CI/CD
Solomom Hykes, qui est le fondateur de Docker qu’il a vendu par la suite , lance un nouveau projet nommé Dagger . Dagger à l’ambition de devenir un outil agnostique permettant d’exécuter des pipelines CI/CD. Pour cela les pipelines sont écrit dans un langage déclaratif appelé CUE (configurer, unifier, exécuter). Par la suite, Dagger deviendra une plateforme d’exécution dans le Cloud qui sera optionnel.
Dagger ne cherche pas à remplacer pas nos outils CI/CD habituels, il les améliore en y ajoutant une couche d’abstraction. En effet, Dagger peut tourner sur la plupart des produits de CI/CD existant (Jenkins, Gitalb, Github, …), mais aussi localement.
Les principaux gains que je vois :
- Les
devs
vont être ravie de ne pas écrire leur code enYAML
mais enCUE
↗ dérivé deJSON
. Un peu comme leHCL
d’Hashicorp. - Dagger peut être exécuté localement et peut remplacer tout autre outil
comme
Makefile
. - On peut de changer de plateforme CI/CD sans rien réécrire.
Installer Dagger
Attention c’est encore un produit en cours de développement et donc sujet à changement. Il y a eu une belle rupture entre la version 0.1 et la 0.2 qui apporte une CLI repensée et l’arrivée d’une API.
Débuter avec Dagger
Il faut que Docker soit installé sur le poste de développement, car dagger utilise buildkit pour exécuter les plans.
Le mieux est de télécharger un exemple qui permet de builder, tester et
deployer une application react
.
Le contenu du fichier cue :
Un package Dagger :
- fait appel à des librairies, ici core, mais il en existe d’autres
- contient un plan
dagger.#Plan
- interagit avec des clients : fichiers, …
- exécute des actions
Ici le plan exécute l’action hello qui lance une commande dans un container
construit avec l’image alpine:3
.
Lancement du pipeline
Plus loin
Débuter avec Dagger n’est pas si simple, faut dire que ce nouveau langage est un peu compliqué. Mais je trouve le projet génial et prometteur de par cette volonté de le rendre agnostique et le fait qu’il puisse être exécuté en local : Fini les push à gogo pour les debugger.
Quelques points à éclaircir :
- Comment sont gérés les secrets ?
- Existe-t-il un mode exécution à distance ?
- Factorisation du code, écriture de module, repo ?
- Extension vs code ?
Je compléterai le billet à fait de mes découvertes.
Plus d’infos sur le site du projet dagger.io ↗ et github.com ↗