Принципы непрерывной доставки

Как уже упоминалось здесь,

Ниже приведены принципы непрерывной доставки.

Every build is a potential release
Eliminate manual bottlenecks
Automate wherever possible
Have automated tests you can trust

В традиционном процессе сборки, без использования подхода непрерывной доставки, мы фиксируем код в основной ветви по нескольким причинам, главным образом для совместной работы разработчиков и тестировщиков.

Что касается первого принципа, как каждый коммит может стать потенциальным релизом?

2 ответа

Решение

Это довольно просто - если вы создали коммит и отправили изменения в master, а затем запустили сборку и все ваши автоматические тесты были успешно выполнены, то эта сборка может быть использована как релиз.

Таким образом, этот принцип больше связан со сборкой, чем с фиксацией, но если вы настроили запуск сборки для каждого изменения, переданного мастеру (Automate wherever possible принцип), то в данном случае это синоним.

Непрерывная доставка является продолжением непрерывной интеграции, см. Как непрерывная доставка связана с непрерывной доставкой / развертыванием?, И из практики CI:

Каждый коммит должен основываться на машине интеграции

Так что да, в CI/CD будет создаваться каждый коммит, и, если все критерии CD выполнены (акцент на потенциал!), Коммит доставляется (или может быть развернут, если D в CD стоит для развертывания). Если нет, то проблема должна быть решена.

Могут быть исключения, например, из-за бизнес-требований или ограничений ресурсов, в которых конвейер доставки / развертывания не запускается для каждой успешной фиксации CI. Но это усложняет выявление и исправление регрессий.

Но фиксация изменений с зависимостями от других, еще не зафиксированных изменений (как упомянуто в комментариях) не совместима с методологией CI/CD. Фиксация незавершенного выполнения в таком контексте все еще возможна с использованием функциональных переключателей / флагов и / или методов ветвления за абстракцией, которые могут скрывать временно неудовлетворенные зависимости, чтобы не вызывать регрессии.

Другие вопросы по тегам