BuildKit: Docker's Hidden Gem That Can Build Almost Anything
BuildKit est un cadre de build général et plug-and-play qui peut produire des images OCI, des archives, des répertoires locaux ou d'autres artefacts décrits par un graphe de fichiers. Au cœur se trouve LLB, une définition de build de bas niveau décrite par un protocole protobuf et représentant un DAG d'opérations, avec un adressage par contenu pour le cache. Les frontends sont des images qui transforment votre définition de build (Dockerfile, YAML, JSON, TOML ou tout autre format) en LLB, et le langage de build n'est pas fixé par BuildKit. Le solver exécute le graphe LLB en parallèle et le cache est basé sur le contenu, ce qui permet de réutiliser des étapes déjà construites et d'éviter les reconstructions inutiles. Des projets comme Earthly et Dagger s'appuient sur ce mécanisme, et l'article illustre un frontend personnalisé (apkbuild) qui produit des paquets APK à partir d'un YAML sans Dockerfile, démontrant la puissance et la flexibilité de BuildKit.