Tooling & Setup
CI Failures

Understanding CI Failures

CI failures aren't mysterious. Learn to read them.

Common CI Jobs

✓ Tests
✓ Linting
✓ Type Checking
✓ Coverage
✓ Performance Benchmarks
✓ Security Scanning

Reading Failure Output

JOB: Tests
FAILURE: Test 'get_user_by_id' failed

AssertionError: None != <User object>
File: tests/test_user_service.py:45
    assert result == expected_user

The test expected result to be a User object,
but got None instead.

What to do: Fix the code to return a User object.

Common Failures

ErrorMeaningFix
Test failedCode broke expected behaviorFix the code
Import errorMissing/wrong moduleCheck imports
Type errorWrong data typeFix types
Coverage droppedTests don't cover new codeAdd tests
Lint failedCode style violatedRun formatter

Debugging CI

1. Read the exact error
2. Reproduce locally
3. Fix locally
4. Run tests locally
5. Push again
6. Watch CI pass

CI isn't the enemy. It's your safety net. Fix CI failures aggressively.