Atlantis : deux verrous différents, pas un seul
Atlantis verrouille un répertoire Terraform contre deux PR concurrentes. Ce verrou n'a rien à voir avec le lock d'état Terraform, un mécanisme indépendant.
Atlantis verrouille un répertoire Terraform contre deux PR concurrentes. Ce verrou n'a rien à voir avec le lock d'état Terraform, un mécanisme indépendant.
Atlantis locks a Terraform directory against two concurrent PRs. That lock has nothing to do with Terraform's own state lock, an independent mechanism.
Flyway impose des scripts SQL versionnés, Liquibase ajoute un changelog agnostique du SGBD et un rollback déclaratif. Le vrai critère n'est pas lequel est meilleur.
Flyway enforces versioned SQL scripts, Liquibase adds a DB-agnostic changelog and declarative rollback. The real deciding factor isn't which one is better.
set -e n'arrête jamais un script à l'intérieur d'un if ni d'une condition &&. Comprendre les trois options séparément évite le faux sentiment de sécurité.
What set -euo pipefail actually means, flag by flag: set -e never catches an error inside an if or an && condition, and each flag catches something else.
Un hook Helm s'exécute en dehors de la release qu'il accompagne. helm rollback ne le rejoue jamais, ce qui casse le principe même du rollback si on ne le sait pas.
A Helm hook runs outside the release it accompanies. helm rollback never replays it, which breaks the whole point of rollback if you don't know that.
Des environnements éphémères par pull request, créés et détruits automatiquement, résolvent un vrai problème de revue. Ce que ça coûte en isolation, et le piège du nettoyage qui ne se fait jamais.
A full ephemeral environment per PR, provisioned and torn down automatically, solves a real review problem. What it costs in isolation, and the cleanup that never fires.
GitHub Actions and GitLab CI look alike in YAML but diverge on what matters: platform portability, built-in features, and real lock-in.
GitHub Actions et GitLab CI se ressemblent en YAML mais divergent sur ce qui compte : portabilité de la plateforme, fonctionnalités intégrées, verrouillage.
Why a monorepo that rebuilds everything on every commit stops scaling, how a dependency graph determines what actually changed, and the remote-cache hash trap.
Pourquoi un monorepo qui teste tout à chaque commit ne scale pas, comment un graphe de dépendances détermine ce qui a changé, et le piège du cache mal invalidé.
A dependency never updated becomes a security debt that accumulates silently. Renovate and Dependabot both automate updates, but not the same way.
Une dépendance jamais mise à jour devient une dette de sécurité qui s'accumule en silence. Renovate et Dependabot automatisent la mise à jour, pas la même façon.
A runner hosted by GitHub or GitLab can never reach your internal network. The choice between self-hosted and hosted isn't primarily a cost question.
Des runners CI hébergés par GitHub ou GitLab ne peuvent jamais atteindre votre réseau interne. Le vrai calcul n'est pas d'abord une question de coût à la minute.
Un cache Docker mal ordonné invalide tout à chaque commit, peu importe le backend. Ce qui détermine réellement le taux de cache hit en CI, avant même BuildKit.
A badly ordered Docker cache invalidates everything on every commit, regardless of backend. What actually determines cache hit rate in CI, before BuildKit even matters.
Comment un rollout canary se déclenche et se juge depuis le pipeline via Prometheus, et pourquoi déploiement et release ne sont pas le même événement.
How a canary rollout gets triggered and judged automatically from the pipeline using Prometheus metrics, and why deployment and release are not the same event.
Vulnerability scanning as a pipeline gate, keyless image signing with cosign, SBOM generation, and verifying signatures at admission before an image runs.
Scan de vulnérabilités en garde-fou de pipeline, signature keyless des images de conteneurs avec cosign, SBOM et vérification à l'admission Kubernetes.
How CI secrets leak from a masked variable, why masking isn't a security boundary, and how OIDC federation replaces long-lived keys with short-lived tokens.
Comment un credential cloud dans la CI finit par fuiter, pourquoi masquer une variable n'est pas une frontière de sécurité, et ce que change l'identité fédérée.
Pourquoi rebuilder par environnement empêche de garantir qu'on déploie ce qu'on a testé, comment marche la promotion par digest, et le piège du tag flottant.
Why rebuilding per environment cannot guarantee you deploy what you tested, how artifact promotion by digest works, and the floating-tag trap.
How to sequence a database migration job ahead of a rollout, the expand/contract pattern for zero-downtime changes, and why rollback is often a myth.
Comment ordonnancer les migrations de schéma avant un rollout, le pattern expand/contract pour rester compatible, et pourquoi le rollback est souvent un mythe.