DevOps

Как я перестал воевать с CI/CD и начал жить

Полтора года назад наш CI был классическим «чемоданом без ручки»: сборка тянулась 47 минут, тесты падали от случайного таймаута, а деплой вручную подтверждал человек с железными нервами (обычно я в 23:40).

Перелом наступил, когда из-за мёрджа в пятницу мы потеряли вечер всей команды. Тогда я сел и написал список всего, что бесит в пайплайне. Список получился на 34 пункта — это был диагноз.

Что мы сделали

Первым делом разрезали монолитный пайплайн на независимые стадии с явными артефактами между ними. Кэш зависимостей вынесли в отдельный слой, а тесты распараллелили по шардам.

pipeline:
  stages: [lint, build, test, deploy]
  cache:
    key: deps-{{ lockfile.hash }}
    paths: [.cache/]
  test:
    parallel: 8
    flaky_retry: 1

Вторым шагом была борьба с flaky-тестами: каждый нестабильный тест получил тикет и карантин. Через два месяца карантин опустел, а доверие к зелёной сборке вернулось.

Правило команды: падение CI — это инцидент. Не «перезапущу-ка ещё разок», а разбор: почему и как этого избежать.

Итог: 47 минут превратились в 8, деплои стали скучными (это комплимент), а пятница снова стала пятницей. Если у вас похожие боли — начните со списка из 34 пунктов, честно.

читайте также

Микросервисы в Docker: уроки, которые дал прод

Комментарии 2

М
Марина К.29 августа 2026

Список из 34 пунктов — гениально простой инструмент. Завтра же сделаю такой у нас, у меня как раз пайплайн на 40 минут 😅

D
dev_kolya30 августа 2026

Карантин для flaky-тестов работает, подтверждаю. Главное — не забыть про регламент вычистки, иначе карантин станет вторым мейном.

Оставить комментарий