8+2 Maturity Levels of Continuous Integration

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Перед тем, как ваша непрерывная интеграционная платформа станет идеальной, вам придется пройти несколько уровней. Я нашел восемь из них и представил свои результаты на конференции DevOpsDays в Солт-Лейк-Сити несколько недель назад (смотрите видео). Теперь пришло время записать их и спросить вас: На каком уровне вы находитесь? Оставьте свой ответ ниже.

  1. Автоматизированная сборка. На этом уровне ваша сборка автоматизирована, что означает, что вы можете компилировать, тестировать и упаковывать весь продукт всего одной командой в командной строке. Обратите внимание, всего одной командой. Вы должны иметь возможность нажать одну кнопку и получить либо ошибку, либо успешную сборку.

  2. Git. На этом уровне вы храните свой исходный код в Git. Вы можете хранить его и в другой системе контроля версий, но это было бы странно—Git является нынешним статус кво. Вы должны иметь возможность получить новый компьютер, без всяких данных, склонировать исходный код из репозитория Git и выполнить полную сборку.

  3. Запросы на включение изменений. Каждое изменение в вашем исходном коде должно быть представлено через запрос на включение изменений (pull request), что означает, что вы размещаете свой репозиторий на GitHub. Вы можете разместить его где-то еще, но опять же, это было бы странно, потому что GitHub является текущим статус кво. Еще раз, никто не должен иметь возможность непосредственно вносить изменения в ветку master, кроме как через форки и запросы на включение изменений.

  4. Обзор кода. Каждый запрос на слияние должен пройти обязательный обзор кода перед слиянием. У вас должна быть политика обзора кода, которая объясняет, кто проводит обзоры, что происходит, если автор не согласен с обозревателем и т. д. Однако ни один запрос на слияние не может быть слиянием, пока он не был обзором.

  5. Тесты. На этом уровне ваш код покрыт юнит-тестами (а также интеграционными тестами), и каждое изменение сопровождается новым тестом. Ваша автоматизированная сборка запускает все тесты вместе и завершается неудачей, если хотя бы один из них не проходит.

  6. Статический анализ. Проверка качества вашего кода без его запуска - это то, чем занимается статический анализ. На этом уровне качество вашего кода проверяется автоматизированной сборкой. Если качество ниже порогового значения, сборка завершается неудачей.

  7. Сборки до полета. Эта идея объясняется здесь.

  8. Симуляция производства. Сборка выполняется в контейнере, который моделирует рабочую среду и данные производства.

  9. Стресс-тесты. Производительность и стресс-тесты автоматизированы и выполняются для каждой сборки.

Кстати, на презентации я также упомянул, с какими проблемами вы можете столкнуться на каждом уровне зрелости.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:33

sixnines availability badge   GitHub stars