Update Article “2023-04-11-fabriquer-des-conteneurs-légers-depuis-une-ci-cd”

This commit is contained in:
Quentin 2023-04-11 14:55:49 +00:00
parent e590658d31
commit 6859469053

View file

@ -9,7 +9,7 @@ description: Construire et publier des conteneurs légers et multi-plateformes
depuis une CI/CD implique plusieurs défis à relever quand on a pas de daemon
Docker à disposition, je vous partage mes réflexions.
---
J'ai pas mal travaillé sur la CI/CD de [Garage](https://garagehq.deuxfleurs.fr/), et force est de constater qu'on a rencontré un nombre incroyable de problèmes. Entre autre, on a noté que les builds Rust sans cache sont trop lents par rapport à nos attentes, qu'il n'y avait pas de solution légère pour gérer les artefacts binaires et enfin que construire un conteneur quand on a un CI/CD à base de Docker, ça n'était pas possible car on n'avait pas accès au daemon docker ni la possibilité de faire du “docker in docker” de manière à peu près sécurisé.
J'ai pas mal travaillé sur la CI/CD de [Garage](https://garagehq.deuxfleurs.fr/), et force est de constater qu'on a rencontré un nombre incroyable de problèmes. Entre autre, on a noté que les builds Rust sans cache sont trop lents par rapport à nos attentes, qu'il n'y avait pas de solution légère pour gérer les artefacts binaires et enfin que construire un conteneur quand on a un CI/CD à base de Docker, ça n'était pas possible car on n'avait pas accès au daemon docker ni la possibilité de faire du “docker in docker” de manière à peu près sécurisée.
Si la question du cache et des artefacts binaires est passionnante, nous allons la garder pour un autre billet de blog, et nous focaliser sur **comment construire des conteneurs légers, multi-plateforme et les publier** dans ce billet. Si vous ne voyez pas ce que j'entends par registre statique, allez donc [jeter un coup d'oeil à mon précédent billet !](https://quentin.dufour.io/blog/2023-04-06/un-registre-statique-docker-avec-garage/)
@ -25,7 +25,7 @@ _À noter qu'il y a un dernier point qui ne sera pas abordé dans ce billet qui
Pour ce billet, on va prendre comme un exemple un programme en go que j'ai écrit, Albatros, ma propre CI/CD (ça devient déjà meta). L'avantage de prendre comme exemple un programme en Go, c'est que ça se cross compile facilement. Voilà un extrait du fichier `flake.nix` de notre projet :
```hcl
```
# declare the go module of this package, allow for cross compilation
gopkg = arch: (pkgs.buildGoModule rec {
pname = "albatros-go-module";