Как непрерывная интеграция связана с непрерывной доставкой / развертыванием?

20

Вот цитата из текущего содержания :

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

ОК, я понял Но есть также и , и здесь я постоянно теряюсь:

  • Как непрерывная интеграция связана с непрерывной доставкой и / или непрерывным развертыванием , если предположить, что где-то по линии через integrationвас вы окажетесь deliveringв целевой среде, где все будет deployed.
  • В чем разница между непрерывной доставкой и непрерывным развертыванием ?

Когда-то, до того, как DevOps назывался DevOps, мы использовали терминологию, которая может помочь понять эти новые термины DevOps, такие как:

  • продвигать (или понижать ) некоторую предварительно подготовленную цель, необязательно в сочетании с некоторым типом процесса регенерации (компилирует, связывает и т. д.), чтобы упаковать все связанные компоненты вместе в исполняемые вещи. Вот что должно быть похоже / близко к непрерывной интеграции или нет?
  • распространять в какой-либо целевой среде, используя что-то вроде FTP (если стандартные копии не могут преодолеть разрыв), но еще не активировать его в целевой. Вот что должно быть похоже / близко к непрерывной доставке или нет?
  • установить (или активировать ) в какой-либо целевой среде в сочетании с такими вещами, как связывание, операции остановки / запуска и т. д. Вот что должно быть похоже / близко к непрерывному развертыванию или нет?
Pierre.Vriens
источник
Слишком много разметки тега затрудняет чтение. Это не дает больше контекста к вопросу, поэтому я думаю, что Ords может быть подчеркнуто подчеркиванием, _markdown_ чтобы облегчить чтение
Tensibai
1
Я имею в виду, что редактирование - это боль :) подсказка для ответа blog.crisp.se/wp-content/uploads/2013/02/…
Tensibai
Связанное сообщение StackOverflow
Дэн Корнилеску
Мой связанный ответ: softwareengineering.stackexchange.com/a/358551/3385
Накилон

Ответы:

23

Непрерывная поставка и непрерывное развертывание делают непрерывную интеграцию еще одним шагом вперед, добавляя к процессу шаг «развертывание в производство». Разница между непрерывной доставкой и развертыванием заключается в том, что для доставки этот шаг выполняется вручную, а для развертывания - автоматически.

Разница между непрерывной интеграцией, непрерывной доставкой и непрерывным развертыванием

Разница между непрерывной интеграцией, непрерывной доставкой и непрерывным развертыванием. Изображение скопировано с codeproject.com

Независимо от того, выполняете ли вы непрерывную доставку или непрерывное развертывание, очень много зависит от реализации. Если вы делаете непрерывное развертывание, изменения в коде будут развернуты автоматически после прохождения приемочных тестов. Это может или не может быть желательным для вашего продукта. При непрерывной доставке люди могут выбирать, будет ли развернуто конкретное изменение кода (и, возможно, где именно оно будет развернуто).

Поскольку разница между непрерывной доставкой и развертыванием невелика и многие люди не знают точной разницы, эти два термина иногда используются взаимозаменяемо.

THelper
источник
Ницца! Но ... решение (ваш ответ) проблемы (мой вопрос) меняет проблему ... читать дальше ...
Pierre.Vriens
4

Непрерывная доставка и непрерывное развертывание (CD) - это более или менее одно и то же *. Каждый раз, когда изменение считается «готовым к использованию» (проверено / проверено), оно должно быть немедленно выпущено. Вы можете делать это столько раз в день, сколько выполнено.

Непрерывная интеграция (CI) относится только к объединению кода часто, чтобы убедиться, что ветви функций не отклоняются слишком далеко от вашей основной «основной» ветви, а также, чтобы вы очень быстро знали, есть ли какие-либо проблемы с кодом из перспектива интеграции - т. е. нарушил ли ты какую-либо функциональность при изменении материала.

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

* Редактировать: вот статья, обсуждающая разницу. https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff Непрерывная доставка не всегда означает фактическое развертывание на рабочем месте, а скорее означает постоянное развертывание в производственной среде с уверенностью, что эти изменения могут перейти в производство в любое время, когда бизнес будет готов. На практике большинство людей сравнивают эти термины.

tayworm
источник
мерси! Но что касается твоего "более или менее одного и того же", правда? Вы можете придумать что-нибудь, что иллюстрирует какие-либо нюансы?
Pierre.Vriens
Я обновил свой пост с примечанием о различиях, однако я верю, что в обычном разговоре большинство людей будут использовать эти термины взаимозаменяемо.
tayworm
2

Определенная версия программного продукта должна сначала завершить этап интеграции, прежде чем его можно будет доставить или развернуть.

Для непрерывной доставки / развертывания необходима постоянная интеграция. В противном случае, если события, завершенные интеграцией, находятся слишком далеко друг от друга, чтобы претендовать на «непрерывный» атрибут, то возможны также доставки / развертывания (только подмножество интегрированных версий, как правило, квалифицируются для доставки / развертывания).

Обновление: Мой ответ только подчеркивает зависимость (отношения) между CI и (обоими) компакт-дисками, терминология довольно хорошо описана в ответе THelper.

Единственный комментарий, который у меня есть, касается (перегруженного) использования deployment. Развертывание в непроизводственной среде - это реальная вещь. Они могут даже случаться достаточно часто - например, как часть различных этапов тестирования во время непрерывной доставки. Но это не делает такие развертывания continuous deployments. Непрерывное развертывание относится конкретно к развертыванию в производственной среде.

Дан Корнилеску
источник
хорошо, это все помогает, но, возможно, вы можете расширить свой ответ, описав доставку и развертывание?
Pierre.Vriens
1

По сути, непрерывная интеграция является частью как непрерывной доставки, так и непрерывного развертывания, за исключением того, что релизы происходят автоматически. Вы также можете думать о непрерывной доставке как о логическом следующем шаге непрерывной интеграции, и она работает во всех средах. Непрерывная интеграция также помогает в проверке артефактов, поэтому ее можно быстрее развертывать. Несмотря на то, что невозможно обеспечить непрерывное развертывание без непрерывной интеграции, и намного проще выявлять ошибки с помощью непрерывной интеграции. Все эти «непрерывные вещи», в конечном счете, направлены на удаление ненужных действий в рабочем процессе разработки. Самое главное, что CI / CD важны как с технической, так и с деловой точки зрения. Компании, которые не принимают эти принципы DevOps, рискуют пойти по пути динозавров. В современной быстро меняющейся ИТ-среде это либоDevOps или умри.

DevOps джедай
источник