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

Nov 19, 2025
∙
4 min
read
Updating Materialized Views (Without Worrying Too Much)
Materialized views are powerful but painful to change. Here’s how we safely version, refresh, and migrate them without locking production or timing out deployments, plus the approach we use to avoid dangerous DROP/CREATE migrations.

Rémy Duthu

Nov 19, 2025
∙
4 min
read
Updating Materialized Views (Without Worrying Too Much)
Materialized views are powerful but painful to change. Here’s how we safely version, refresh, and migrate them without locking production or timing out deployments, plus the approach we use to avoid dangerous DROP/CREATE migrations.

Rémy Duthu

Nov 19, 2025
∙
4 min
read
Updating Materialized Views (Without Worrying Too Much)
Materialized views are powerful but painful to change. Here’s how we safely version, refresh, and migrate them without locking production or timing out deployments, plus the approach we use to avoid dangerous DROP/CREATE migrations.

Rémy Duthu

Nov 19, 2025
∙
4 min
read
Updating Materialized Views (Without Worrying Too Much)
Materialized views are powerful but painful to change. Here’s how we safely version, refresh, and migrate them without locking production or timing out deployments, plus the approach we use to avoid dangerous DROP/CREATE migrations.

Rémy Duthu

Nov 17, 2025
∙
5 min
read
Goodbye Checklists, Hello AI Linters
We turned our pull request rules into small AI-powered linters using GitHub’s new actions/ai-inference. Each linter enforces one rule: catching risky changes before humans do, without regexes, static analysis, or friction.

Mehdi Abaakouk

Nov 17, 2025
∙
5 min
read
Goodbye Checklists, Hello AI Linters
We turned our pull request rules into small AI-powered linters using GitHub’s new actions/ai-inference. Each linter enforces one rule: catching risky changes before humans do, without regexes, static analysis, or friction.

Mehdi Abaakouk

Nov 17, 2025
∙
5 min
read
Goodbye Checklists, Hello AI Linters
We turned our pull request rules into small AI-powered linters using GitHub’s new actions/ai-inference. Each linter enforces one rule: catching risky changes before humans do, without regexes, static analysis, or friction.

Mehdi Abaakouk

Nov 17, 2025
∙
5 min
read
Goodbye Checklists, Hello AI Linters
We turned our pull request rules into small AI-powered linters using GitHub’s new actions/ai-inference. Each linter enforces one rule: catching risky changes before humans do, without regexes, static analysis, or friction.

Mehdi Abaakouk

Nov 6, 2025
∙
8 min
read
Origin and Evolution of the Globstar
Discover how the double-asterisk recursive glob pattern evolved: from Zsh’s early 1990s innovation to Bash’s globstar and beyond, spreading into Python, Ruby, Git, and modern build tools.

Julien Danjou

Nov 6, 2025
∙
8 min
read
Origin and Evolution of the Globstar
Discover how the double-asterisk recursive glob pattern evolved: from Zsh’s early 1990s innovation to Bash’s globstar and beyond, spreading into Python, Ruby, Git, and modern build tools.

Julien Danjou

Nov 6, 2025
∙
8 min
read
Origin and Evolution of the Globstar
Discover how the double-asterisk recursive glob pattern evolved: from Zsh’s early 1990s innovation to Bash’s globstar and beyond, spreading into Python, Ruby, Git, and modern build tools.

Julien Danjou

Nov 6, 2025
∙
8 min
read
Origin and Evolution of the Globstar
Discover how the double-asterisk recursive glob pattern evolved: from Zsh’s early 1990s innovation to Bash’s globstar and beyond, spreading into Python, Ruby, Git, and modern build tools.

Julien Danjou

Nov 5, 2025
∙
5 min
read
Shadow Shipping: How We Double-Executed Code to Ship Safely
How do you ship risky code without crossing your fingers? In this post, we explain how he ran old and new logic in parallel (“shadow shipping”) to validate behavior in production before rollout. Learn how this simple pattern turned feature-flag anxiety into data-driven confidence.

Julian Maurin

Nov 5, 2025
∙
5 min
read
Shadow Shipping: How We Double-Executed Code to Ship Safely
How do you ship risky code without crossing your fingers? In this post, we explain how he ran old and new logic in parallel (“shadow shipping”) to validate behavior in production before rollout. Learn how this simple pattern turned feature-flag anxiety into data-driven confidence.

Julian Maurin

Nov 5, 2025
∙
5 min
read
Shadow Shipping: How We Double-Executed Code to Ship Safely
How do you ship risky code without crossing your fingers? In this post, we explain how he ran old and new logic in parallel (“shadow shipping”) to validate behavior in production before rollout. Learn how this simple pattern turned feature-flag anxiety into data-driven confidence.

Julian Maurin

Nov 5, 2025
∙
5 min
read
Shadow Shipping: How We Double-Executed Code to Ship Safely
How do you ship risky code without crossing your fingers? In this post, we explain how he ran old and new logic in parallel (“shadow shipping”) to validate behavior in production before rollout. Learn how this simple pattern turned feature-flag anxiety into data-driven confidence.

Julian Maurin

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
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.
