Inside the Trenches of CI/CD
Inside the Trenches of CI/CD
Stories, insights, and opinions from the team behind Mergify

Julien Danjou
Sep 3, 2025
∙
3 min
read
Mergify CI Insights now supports Jenkins. With one plugin install, you get dashboards for flaky jobs, slow builds, reruns, and job costs in hours. Turn your Jenkins pipeline from a black box into clear visibility — and ship with confidence.
Stay ahead in CI/CD
The latest blog posts, release news, and automation tips straight in your inbox
Subscribe to our RSS feed
/feed subscribe https://mergify.com/blog/rss.xml
Stay ahead in CI/CD
The latest blog posts, release news, and automation tips straight in your inbox
Subscribe to our RSS feed
/feed subscribe https://mergify.com/blog/rss.xml
Stay ahead in CI/CD
The latest blog posts, release news, and automation tips straight in your inbox
Subscribe to our RSS feed
/feed subscribe https://mergify.com/blog/rss.xml
Stay ahead in CI/CD
The latest blog posts, release news, and automation tips straight in your inbox
Subscribe to our RSS feed
/feed subscribe https://mergify.com/blog/rss.xml

Oct 29, 2025
∙
6 min
read
Why PostgreSQL Ignored Our Index (and What the Planner Was Thinking)
PostgreSQL doesn’t "ignore" your indexes, it just does the math differently. We dive into how the planner weighs cost, why it sometimes chooses sequential scans, and how we tuned our queries to make peace with it.

Fabien Martinet

Oct 29, 2025
∙
6 min
read
Why PostgreSQL Ignored Our Index (and What the Planner Was Thinking)
PostgreSQL doesn’t "ignore" your indexes, it just does the math differently. We dive into how the planner weighs cost, why it sometimes chooses sequential scans, and how we tuned our queries to make peace with it.

Fabien Martinet

Oct 29, 2025
∙
6 min
read
Why PostgreSQL Ignored Our Index (and What the Planner Was Thinking)
PostgreSQL doesn’t "ignore" your indexes, it just does the math differently. We dive into how the planner weighs cost, why it sometimes chooses sequential scans, and how we tuned our queries to make peace with it.

Fabien Martinet

Oct 29, 2025
∙
6 min
read
Why PostgreSQL Ignored Our Index (and What the Planner Was Thinking)
PostgreSQL doesn’t "ignore" your indexes, it just does the math differently. We dive into how the planner weighs cost, why it sometimes chooses sequential scans, and how we tuned our queries to make peace with it.

Fabien Martinet

Oct 23, 2025
∙
5 min
read
The Magic (and Mayhem) Behind Our Config Deprecation Transformers
We built a "self-healing" system that fixes deprecated configs by opening PRs automatically. It worked like magic, until it didn't. Here's what we learned about the thin line between elegant automation and uncontrollable complexity.

Guillaume Risbourg

Oct 23, 2025
∙
5 min
read
The Magic (and Mayhem) Behind Our Config Deprecation Transformers
We built a "self-healing" system that fixes deprecated configs by opening PRs automatically. It worked like magic, until it didn't. Here's what we learned about the thin line between elegant automation and uncontrollable complexity.

Guillaume Risbourg

Oct 23, 2025
∙
5 min
read
The Magic (and Mayhem) Behind Our Config Deprecation Transformers
We built a "self-healing" system that fixes deprecated configs by opening PRs automatically. It worked like magic, until it didn't. Here's what we learned about the thin line between elegant automation and uncontrollable complexity.

Guillaume Risbourg

Oct 23, 2025
∙
5 min
read
The Magic (and Mayhem) Behind Our Config Deprecation Transformers
We built a "self-healing" system that fixes deprecated configs by opening PRs automatically. It worked like magic, until it didn't. Here's what we learned about the thin line between elegant automation and uncontrollable complexity.

Guillaume Risbourg

Oct 22, 2025
∙
7 min
read
TypeScript's import type: The Flag That Makes Builds Honest
TypeScript doesn’t run your code, but your bundler might think it does. Learn why marking your type imports with import type (and enabling `verbatimModuleSyntax`) makes your builds faster, cleaner, and more predictable.

Alexandre Gaubert

Oct 22, 2025
∙
7 min
read
TypeScript's import type: The Flag That Makes Builds Honest
TypeScript doesn’t run your code, but your bundler might think it does. Learn why marking your type imports with import type (and enabling `verbatimModuleSyntax`) makes your builds faster, cleaner, and more predictable.

Alexandre Gaubert

Oct 22, 2025
∙
7 min
read
TypeScript's import type: The Flag That Makes Builds Honest
TypeScript doesn’t run your code, but your bundler might think it does. Learn why marking your type imports with import type (and enabling `verbatimModuleSyntax`) makes your builds faster, cleaner, and more predictable.

Alexandre Gaubert

Oct 22, 2025
∙
7 min
read
TypeScript's import type: The Flag That Makes Builds Honest
TypeScript doesn’t run your code, but your bundler might think it does. Learn why marking your type imports with import type (and enabling `verbatimModuleSyntax`) makes your builds faster, cleaner, and more predictable.

Alexandre Gaubert

Oct 15, 2025
∙
5 min
read
Should We Still Write Docs If AI Can Read the Code?
AI can explain what code does — but not why it does it. This post explores how documentation is evolving in the age of AI, and why writing down human intent is becoming one of the most practical forms of AI alignment.

Alexandre Gaubert

Oct 15, 2025
∙
5 min
read
Should We Still Write Docs If AI Can Read the Code?
AI can explain what code does — but not why it does it. This post explores how documentation is evolving in the age of AI, and why writing down human intent is becoming one of the most practical forms of AI alignment.

Alexandre Gaubert

Oct 15, 2025
∙
5 min
read
Should We Still Write Docs If AI Can Read the Code?
AI can explain what code does — but not why it does it. This post explores how documentation is evolving in the age of AI, and why writing down human intent is becoming one of the most practical forms of AI alignment.

Alexandre Gaubert

Oct 15, 2025
∙
5 min
read
Should We Still Write Docs If AI Can Read the Code?
AI can explain what code does — but not why it does it. This post explores how documentation is evolving in the age of AI, and why writing down human intent is becoming one of the most practical forms of AI alignment.

Alexandre Gaubert

Oct 8, 2025
∙
4 min
read
Why WARNING Has No Place in Modern Logging
Most systems drown in meaningless WARNING logs. They waste money, obscure real errors, and help no one. Here’s why your next logging cleanup should start by deleting WARNING — and how structured logs make your production systems clearer, cheaper, and safer.

Mehdi Abaakouk

Oct 8, 2025
∙
4 min
read
Why WARNING Has No Place in Modern Logging
Most systems drown in meaningless WARNING logs. They waste money, obscure real errors, and help no one. Here’s why your next logging cleanup should start by deleting WARNING — and how structured logs make your production systems clearer, cheaper, and safer.

Mehdi Abaakouk

Oct 8, 2025
∙
4 min
read
Why WARNING Has No Place in Modern Logging
Most systems drown in meaningless WARNING logs. They waste money, obscure real errors, and help no one. Here’s why your next logging cleanup should start by deleting WARNING — and how structured logs make your production systems clearer, cheaper, and safer.

Mehdi Abaakouk

Oct 8, 2025
∙
4 min
read
Why WARNING Has No Place in Modern Logging
Most systems drown in meaningless WARNING logs. They waste money, obscure real errors, and help no one. Here’s why your next logging cleanup should start by deleting WARNING — and how structured logs make your production systems clearer, cheaper, and safer.

Mehdi Abaakouk

Oct 1, 2025
∙
5 min
read
AI Won't Replace Code Reviews, But It Can Fix Them
Code reviews often fail not because the code is wrong, but because no one knows why it was written that way. This post explores how AI-generated comments can add missing intent to pull requests—making both human and AI reviews smarter, faster, and more effective.

Alexandre Gaubert

Oct 1, 2025
∙
5 min
read
AI Won't Replace Code Reviews, But It Can Fix Them
Code reviews often fail not because the code is wrong, but because no one knows why it was written that way. This post explores how AI-generated comments can add missing intent to pull requests—making both human and AI reviews smarter, faster, and more effective.

Alexandre Gaubert

Oct 1, 2025
∙
5 min
read
AI Won't Replace Code Reviews, But It Can Fix Them
Code reviews often fail not because the code is wrong, but because no one knows why it was written that way. This post explores how AI-generated comments can add missing intent to pull requests—making both human and AI reviews smarter, faster, and more effective.

Alexandre Gaubert

Oct 1, 2025
∙
5 min
read
AI Won't Replace Code Reviews, But It Can Fix Them
Code reviews often fail not because the code is wrong, but because no one knows why it was written that way. This post explores how AI-generated comments can add missing intent to pull requests—making both human and AI reviews smarter, faster, and more effective.

Alexandre Gaubert

Sep 25, 2025
∙
4 min
read
Friends Don't Let Friends Use :latest
Floating versions like :latest, ^, and ~ promise convenience but deliver broken builds, hidden regressions, and supply chain risks. Here we explain why they undermine reproducibility and security and shows how to pin GitHub Actions, Docker images, and dependencies safely.

Mehdi Abaakouk

Sep 25, 2025
∙
4 min
read
Friends Don't Let Friends Use :latest
Floating versions like :latest, ^, and ~ promise convenience but deliver broken builds, hidden regressions, and supply chain risks. Here we explain why they undermine reproducibility and security and shows how to pin GitHub Actions, Docker images, and dependencies safely.

Mehdi Abaakouk

Sep 25, 2025
∙
4 min
read
Friends Don't Let Friends Use :latest
Floating versions like :latest, ^, and ~ promise convenience but deliver broken builds, hidden regressions, and supply chain risks. Here we explain why they undermine reproducibility and security and shows how to pin GitHub Actions, Docker images, and dependencies safely.

Mehdi Abaakouk

Sep 25, 2025
∙
4 min
read
Friends Don't Let Friends Use :latest
Floating versions like :latest, ^, and ~ promise convenience but deliver broken builds, hidden regressions, and supply chain risks. Here we explain why they undermine reproducibility and security and shows how to pin GitHub Actions, Docker images, and dependencies safely.

Mehdi Abaakouk

Sep 18, 2025
∙
6 min
read
Application vs. Database: Where Should Permissions Live?
Permissions drift is real: scattered checks, forgotten filters, and data leaks. PostgreSQL’s Row Level Security (RLS) flips the script: pushing verification into the database for stronger safety, but with trade-offs in debugging and performance.

Fabien Martinet

Sep 18, 2025
∙
6 min
read
Application vs. Database: Where Should Permissions Live?
Permissions drift is real: scattered checks, forgotten filters, and data leaks. PostgreSQL’s Row Level Security (RLS) flips the script: pushing verification into the database for stronger safety, but with trade-offs in debugging and performance.

Fabien Martinet

Sep 18, 2025
∙
6 min
read
Application vs. Database: Where Should Permissions Live?
Permissions drift is real: scattered checks, forgotten filters, and data leaks. PostgreSQL’s Row Level Security (RLS) flips the script: pushing verification into the database for stronger safety, but with trade-offs in debugging and performance.

Fabien Martinet

Sep 18, 2025
∙
6 min
read
Application vs. Database: Where Should Permissions Live?
Permissions drift is real: scattered checks, forgotten filters, and data leaks. PostgreSQL’s Row Level Security (RLS) flips the script: pushing verification into the database for stronger safety, but with trade-offs in debugging and performance.

Fabien Martinet

Sep 10, 2025
∙
14 min
read
The Origin Story of Merge Queues
From Bors and Homu to Bulldozer, Kodiak, Mergify, and now GitHub and GitLab, merge queues have shaped how we keep main branches green. This article traces their history, why they emerged, and how they became a standard in modern software development.

Julien Danjou

Sep 10, 2025
∙
14 min
read
The Origin Story of Merge Queues
From Bors and Homu to Bulldozer, Kodiak, Mergify, and now GitHub and GitLab, merge queues have shaped how we keep main branches green. This article traces their history, why they emerged, and how they became a standard in modern software development.

Julien Danjou

Sep 10, 2025
∙
14 min
read
The Origin Story of Merge Queues
From Bors and Homu to Bulldozer, Kodiak, Mergify, and now GitHub and GitLab, merge queues have shaped how we keep main branches green. This article traces their history, why they emerged, and how they became a standard in modern software development.

Julien Danjou

Sep 10, 2025
∙
14 min
read
The Origin Story of Merge Queues
From Bors and Homu to Bulldozer, Kodiak, Mergify, and now GitHub and GitLab, merge queues have shaped how we keep main branches green. This article traces their history, why they emerged, and how they became a standard in modern software development.

Julien Danjou
Join our community on Slack
Join our community on Slack
Get tips, news, and resources from Mergify and its users.
Curious where your CI is slowing you down?
Try CI Insights — observability for CI teams.
Curious where your CI is slowing you down?
Try CI Insights — observability for CI teams.
Curious where your CI is slowing you down?
Try CI Insights — observability for CI teams.
Curious where your CI is slowing you down?
Try CI Insights — observability for CI teams.
