Непрерывная интеграция — замечательная вещь. Исторический процесс перемещения кода от человека к человеку в различных системах управления версиями перед запуском ручной сборки — это просто. История
Но теперь относительно молодая дисциплина DevOps набирает обороты с внедрением различных облачных сервисов и серверных решений, которые могут похвастаться возможностью постоянной интеграции в рабочий процесс вашей команды Dev.
Что мы ждем! Вставьте весь код в Azure DevOps/Github/Gitlab Repo Stat! Я собрал трубопровод, который построит весь наш код для нас и даже немного протестирует! Мы все настроены правильно?
Неправильный.
Теперь я вообще не инженер Devops. Я инженер -программист, и я думаю, что две роли значительно различаются во многих областях. Так что я, конечно, не имею права рассказать вам, как вы должны реализовать свои трубопроводы CI. Тем не менее, я могу (как кто -то на стороне разработчика вопроса) рассказать вам, как не делать этого. (Или, по крайней мере, как вы можете лучше всего подготовиться, прежде чем начать) (Это также не атака ни в коем случае на инженеров DevOps, большинство из которых талант и знания легко затмевают мои! Это в основном для небольших компаний, желающих начать с нуля с DevOps)
Не просто делайте «что делает Microsoft или Netflix».
Это легкая ошибка. Microsoft создает Azure DevOps, так что нам, несомненно, мы должны запустить наш процесс CI точно так же, как они, верно? Ну не обязательно. Очевидный факт в том, что вы либо Microsoft, либо нет. Скорее всего, у вас будут очень разные способы работы с Microsoft, которые потратили десятилетия, совершенствовая свои рабочие процессы разработки для множества различных продуктов, которые они производят.
Есть много статей, в которых рассказывается, как разные компании, такие как Microsoft и Netflix Запустите свои рабочие процессы. Хотя это ценная идея и, безусловно, может быть источником вдохновения, это не меняет того факта, что у вас, скорее всего, очень разные потребности.
- У вас может быть меньшая команда. Рабочий процесс, предназначенный для того, чтобы удовлетворить сотни коммитов до одного филиала в день, может быть излишним, если у вас есть команда из 5 разработчиков, работающих над одним продуктом.
- Наследие программное обеспечение, такое как кодовые базы, управляющие VB6 или сильно активным кодом, не подходящим для множества решений для трубопроводов, в частности, Azure Tipvelines.
- У вас могут быть разные уровни требований к отчетности от вашей команды руководства, изменяя количество разрешений для каждого процесса, что, в свою очередь, может даже повлиять на виды филиалов, которые вы используете.
- Ваше программное обеспечение, возможно, потребуется протестировать в широком количестве среда для кроссплатформенной совместимости или учетной записи для чрезвычайно конкретных ситуаций/конфигураций окружающей среды. Это может поставить под сомнение, используете ли вы контейнерный подход к CI.
- Вы можете обеспечить соблюдение автоматизации для стандартов кода, таких как Linting
Некоторые из компаний, у которых рабочие процессы, вам может быть проще просто подражать, имеют очень конкретную политику, когда дело доходит до кода доставки. Например, ходят слухи, что некоторые сайты, такие как Github, будут отправлены непосредственно на производство, решив исправить с помощью исправлений, поскольку сообщество обнаруживается. Если это правда, это должно работать на GitHub, но можете честно сказать, что это будет работать для вашего высокочувствительного банковского приложения?
Приведенные выше моменты являются лишь частью многих идиосинкрасий, найденных в командах и компаниях, которые приводят меня к следующему пункту.
Нет подхода «один размер» для CI
Я надеюсь, что в вышесказанном я сообщил, что наивно думать, что есть один универсальный стандарт для CI. A Недавняя исследовательская работа Проведенный в партнерстве между Национальным университетом оборонной технологии, Китай, Университетом Карнеги -Меллона и Калифорнийским университетом, рассмотрел применение стандартизированных структур CI, в частности, с Docker контейнеризации и пришел к выводу, что::
Большинство наших результатов опроса были подтверждены в данных, но некоторые не были, подчеркивая силу смешанных методов для получения целостных результатов. Наши результаты показывают, что разработчики сталкиваются с компромиссами при выборе между различными рабочими процессами CD по отношению к конфигурации, простоте, требованиям, производительности, стабильности, опыту разработчиков и т. Д., И мы смогли переоценить некоторые последствия для различных заинтересованных сторон
Устройство также довольно хорошо проникает в консультации Version1.com :
Не существует «одного размера подходит всем», когда дело доходит до реализации и процессов DevOps. Он должен варьироваться в зависимости от того, что вы делаете, какой тип организационных и программных приложений вы используете, развертываете или управляете …
Создайте процесс с разработчиками, а не для них
Введение любого нового процесса может раскачивать даже самые крепкие лодки, но если есть кто -то, кто стереотипно презирает, это изменит, это разработчик программного обеспечения.
Я могу быть самонадеянным, но из опыта я знаю, что если введен процесс, который влияет на то, как вы доставляете, вы хотите проконсультироваться.
Эта потребность в участии не проистекает из младенческой необходимости иметь свой собственный путь, но вместо этого происходит от стремления к сотрудничеству и стремления к хорошему общению между командами разработки и DevOps.
Это беспроигрышная работа, чтобы работать вместе, чтобы реализовать CI. Ваши разработчики полностью понимают свой процесс, то, что работает хорошо, и технические препятствия, которые могут возникнуть при применении автоматизации. Собираем это с опытом опыта инженеров DevOps, которые понимают возможности бесчисленных инструментов CI в вашем распоряжении, и вы находитесь на пути к победе в войне.
Мы также забываем ребят из QA. Во многих организациях они являются последними людьми, которые обрабатывают код, прежде чем он выйдет в мир. Для них может быть хорошей идеей, чтобы они были в цикле с самого начала, чтобы вы могли лучше разработать процесс, который в конечном итоге готовит продукт к их подписи.
Помедленней
У меня ограниченный опыт работы с инструментами CI, но я работал в основном с Azure DevOps и Jetbrain’s TeamCity. Мне они оба нравятся, но у них есть одна общая задача; огромное количество потенциальных конфигураций.
Конечно, будет так много разных способов настройки решения CI, поскольку существует так много разных способов создания вашего кода. То, что я в конечном итоге посоветовал любому, кто хочет начать их предательское путешествие в сферы автоматизации релиза, — это ходить, прежде чем вы сможете бежать.
Возможно, сначала попробуйте автоматизировать только одну из ваших репо с низким воздействием и попробовать геймплан для того, как вы можете переключиться на свою первоначальную конфигурацию, если что-то пойдет ужасно неправильно. Может быть, вы могли бы провести бок о бок по сравнению с вашим текущим процессом вместе с предлагаемой новой блестящей, чтобы увидеть, есть ли у вас какое-либо ‘ Если это не сломано, не исправьте это «Районы, чтобы сохранить.
Весь смысл CI, как правило, заключается в том, чтобы заставить вас быстро отправить код, сохраняя при этом высокий уровень качества. Во многих случаях, что стремление использовать новый процесс, безусловно, позволит вам быстрее отправить код, но будет ли он стабильным или пронизанным ошибками? Очень трудно сказать, и для меня, слепо прыгать в это с помощью производственного кода, без теста или даже прогона, прежде чем он достигнет клиентов, слишком высокий риск.
Я полностью верю в старый максимум, который говорит « Доставка — это особенность. Я также думаю, что ваш продукт становится совершенно более нестабильным, потому что вы бросились в сексуальный новый процесс не должны быть.
Помните, что медленный и устойчивый строит трубопровод.
Оригинал: «https://dev.to/nickproud/continuous-integration-should-never-be-rushed-1ak6»