Dagger

DevOps 🔴 Senior

Définition

Moteur de CI/CD créé par Solomon Hykes (fondateur de Docker) : les pipelines s'écrivent comme des fonctions en Go, Python, TypeScript, Java, PHP ou Rust, s'exécutent dans des conteneurs avec cache de chaque opération, et tournent à l'identique en local et sur n'importe quelle CI. Lancé en version 0.2 le 30 mars 2022, le projet a annoncé en septembre 2026 une version 1.0 imminente et propose des moteurs managés (Cloud Engines).

Analogie

Au lieu d'écrire la recette en pictogrammes propres à chaque cuisine (YAML GitHub, YAML GitLab…), vous l'écrivez une fois dans votre langue et un robot la cuisine partout.

Exemple de code

// dagger/src/index.ts
import { dag, Container, Directory, object, func } from "@dagger.io/dagger";
@object()
class Ci {
  @func()
  test(source: Directory): Container {
    return dag.container()
      .from("node:24-alpine")
      .withDirectory("/app", source)
      .withWorkdir("/app")
      .withExec(["npm", "ci"])       // chaque étape est cachée
      .withExec(["npm", "test"]);
  }
}
// dagger call test --source=.   (même résultat en local et en CI)

Cas d'usage

Pipelines complexes à tester en local avant de pousser, ou équipes qui veulent sortir du YAML spécifique à une plateforme CI.

Anti-pattern

Réécrire en Dagger un pipeline de trois lignes : l'outil vaut pour des pipelines longs, multi-étapes, où le cache et la portabilité comptent.
#devops#cicd#tooling

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre