Kelly Mears

Continuous Integration

Automatically building and testing every change, so integration problems surface immediately.

Version Control & Delivery2 min read211 words13 out · 36 in
also calledCI

Continuous integration is the practice of automatically building and validating every change as it is proposed, so that problems appear within minutes of being created rather than at some later integration event.

The value is proportional to how quickly and how reliably it reports. A slow pipeline gets worked around; an unreliable one gets ignored, which is the more dangerous outcome — once reruns are routine, real failures are indistinguishable from noise. See Flaky Test.

Several failure modes are worth knowing because they all produce a false green.

A partial check set. Immediately after a push only the fastest checks have registered, so a watcher counting pending items sees none and declares success. Confirming against the checks recorded for a specific revision, rather than the current row set, closes it. See Vacuous Truth.

A skipped job. Jobs conditioned on a target branch or dependent on an earlier job report "skipping" rather than failing, and a skip looks like a pass at a glance.

A missing run. A pipeline can simply fail to be created for a push while sibling workflows fire normally, and no amount of waiting produces it.

A stale reference. A run computed against a merge preview that predates a recent merge tells you nothing about the current state.

See also11

Smoke Test

A fast, shallow check that a build isn't catastrophically broken, run before investing in a deeper test pass.

Testing & Verification9 connections

Stacked Pull Requests

A chain of dependent changes, each reviewed separately and merged in order.

Version Control & Delivery12 connections

Continuous Deployment

Automatically releasing every change that passes validation.

Version Control & Delivery18 connections

Coverage Gate

A build check that fails when coverage falls below a threshold, and what that pressure produces.

Testing & Verification16 connections

Merge Train

Validating changes against the state they will actually merge into, in order, rather than in isolation.

Version Control & Delivery14 connections

Trunk-Based Development

Everyone integrating into one shared branch continuously, with short-lived feature branches.

Version Control & Delivery20 connections

Branching Model

The convention governing what branches exist, what they mean, and how work reaches production.

Version Control & Delivery18 connections

Semantic Conflict

Two changes that merge cleanly and are incompatible in meaning.

Version Control & Delivery15 connections

Three-Way Merge

Combining two lines of work by comparing both against their common ancestor.

Version Control & Delivery17 connections

Git Hook

Scripts Git runs automatically at points such as committing or pushing, used to check formatting and messages locally, and on servers to enforce policy or trigger deploys.

Version Control & Delivery15 connections

Test Impact Analysis

Running only the tests a change could plausibly affect, using dependency graphs, coverage maps, or learned models, so large suites stay fast without giving up their safety net.

Testing & Verification10 connections

Linked from36