0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>18 апр 2025</li>
2
<ul><li>18 апр 2025</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Рассказываем, как работают конвейеры по тестированию и сборке кода.</p>
4
</ul><p>Рассказываем, как работают конвейеры по тестированию и сборке кода.</p>
5
<p>Иллюстрация: Катя Павловская для Skillbox Media</p>
5
<p>Иллюстрация: Катя Павловская для Skillbox Media</p>
6
<p>Автор статей о программировании. 14 лет в IT. Умеет рассказывать о технологиях простыми словами. Автор спецпроекта Advertising for Social Change.</p>
6
<p>Автор статей о программировании. 14 лет в IT. Умеет рассказывать о технологиях простыми словами. Автор спецпроекта Advertising for Social Change.</p>
7
<p>На заре развития IT процесс разработки был запутанным. Программисты писали код и передавали его отделу тестирования, QA-инженеры искали ошибки и возвращали проект на доработку, после нескольких итераций код получала команда эксплуатации. Каждый отдел работал сам по себе, из-за чего разработка продвигалась медленно, а фрагменты кода часто конфликтовали между собой.</p>
7
<p>На заре развития IT процесс разработки был запутанным. Программисты писали код и передавали его отделу тестирования, QA-инженеры искали ошибки и возвращали проект на доработку, после нескольких итераций код получала команда эксплуатации. Каждый отдел работал сам по себе, из-за чего разработка продвигалась медленно, а фрагменты кода часто конфликтовали между собой.</p>
8
<p>В начале 2000-х годов разработчики задумались над автоматизацией процессов. Появились инструменты для автоматического тестирования кода, затем - решения для его доставки пользователям. К 2010-м годам компании начали формировать из этих практик единый процесс, который получил название CI/CD.</p>
8
<p>В начале 2000-х годов разработчики задумались над автоматизацией процессов. Появились инструменты для автоматического тестирования кода, затем - решения для его доставки пользователям. К 2010-м годам компании начали формировать из этих практик единый процесс, который получил название CI/CD.</p>
9
<p>Внедрение практик CI/CD стало ключевым элементом DevOps. В 2009 году в городе Генте в Бельгии состоялась первая конференция DevOps Days, организованная Патриком Дебуа, что стало важным этапом в популяризации методологии.</p>
9
<p>Внедрение практик CI/CD стало ключевым элементом DevOps. В 2009 году в городе Генте в Бельгии состоялась первая конференция DevOps Days, организованная Патриком Дебуа, что стало важным этапом в популяризации методологии.</p>
10
<p><strong>Содержание</strong></p>
10
<p><strong>Содержание</strong></p>
11
<ul><li><a>Что такое CI/CD</a></li>
11
<ul><li><a>Что такое CI/CD</a></li>
12
<li><a>Зачем нужен CI/CD-процесс</a></li>
12
<li><a>Зачем нужен CI/CD-процесс</a></li>
13
<li><a>Как работает CI/CD</a></li>
13
<li><a>Как работает CI/CD</a></li>
14
<li><a>Плюсы и минусы CI/CD</a></li>
14
<li><a>Плюсы и минусы CI/CD</a></li>
15
<li><a>Популярные CI/CD-платформы</a></li>
15
<li><a>Популярные CI/CD-платформы</a></li>
16
<li><a>Как выбрать CI/CD-платформу</a></li>
16
<li><a>Как выбрать CI/CD-платформу</a></li>
17
</ul><p><strong>CI/CD</strong> - это способ разработки, в котором тестирование и развёртывание кода происходит автоматически. Основная цель - ускорить выпуск обновлений и повысить качество ПО за счёт регулярного тестирования.</p>
17
</ul><p><strong>CI/CD</strong> - это способ разработки, в котором тестирование и развёртывание кода происходит автоматически. Основная цель - ускорить выпуск обновлений и повысить качество ПО за счёт регулярного тестирования.</p>
18
<p>Разберём, из каких элементов состоит процесс.</p>
18
<p>Разберём, из каких элементов состоит процесс.</p>
19
<p><strong>Continuous integration (CI, непрерывная интеграция)</strong> - автоматическая интеграция кода в репозиторий проекта. Цель CI - упростить объединение кода от разных разработчиков и быстро выявлять ошибки. Когда программист отправляет код в репозиторий, система запускает тесты. Если в проекте найдутся ошибки, то разработчику придётся забрать код на доработку.</p>
19
<p><strong>Continuous integration (CI, непрерывная интеграция)</strong> - автоматическая интеграция кода в репозиторий проекта. Цель CI - упростить объединение кода от разных разработчиков и быстро выявлять ошибки. Когда программист отправляет код в репозиторий, система запускает тесты. Если в проекте найдутся ошибки, то разработчику придётся забрать код на доработку.</p>
20
<p><strong>Continuous delivery (CD, непрерывная доставка)</strong> - это автоматическая подготовка кода к выпуску. Представьте команду, которая разрабатывает веб-приложение. При каждом изменении кода CD-система автоматически тестирует работоспособность, собирает нужные файлы и разворачивает приложение в тестовой среде. Когда менеджер проекта принимает решение о выпуске новой версии, он активирует публикацию одним нажатием - и подготовленный код разворачивается на рабочем сервере.</p>
20
<p><strong>Continuous delivery (CD, непрерывная доставка)</strong> - это автоматическая подготовка кода к выпуску. Представьте команду, которая разрабатывает веб-приложение. При каждом изменении кода CD-система автоматически тестирует работоспособность, собирает нужные файлы и разворачивает приложение в тестовой среде. Когда менеджер проекта принимает решение о выпуске новой версии, он активирует публикацию одним нажатием - и подготовленный код разворачивается на рабочем сервере.</p>
21
<p><strong>Continuous deployment (CD, непрерывное развёртывание)</strong> - автоматическая доставка кода пользователям без участия разработчиков. Каждое изменение в коде, прошедшее тесты, сразу уходит на основной сервер.</p>
21
<p><strong>Continuous deployment (CD, непрерывное развёртывание)</strong> - автоматическая доставка кода пользователям без участия разработчиков. Каждое изменение в коде, прошедшее тесты, сразу уходит на основной сервер.</p>
22
Этапы CI/CD-пайплайна<em>Инфографика: Skillbox Media</em><p>Непрерывная интеграция в CI/CD - обязательный этап, а доставка и развёртывание - опциональные. Доставка подходит командам, которые хотят контролировать, когда и какие обновления будут получать пользователи, а развёртывание - тем, кому важно, чтобы изменения моментально появлялись на продакшене.</p>
22
Этапы CI/CD-пайплайна<em>Инфографика: Skillbox Media</em><p>Непрерывная интеграция в CI/CD - обязательный этап, а доставка и развёртывание - опциональные. Доставка подходит командам, которые хотят контролировать, когда и какие обновления будут получать пользователи, а развёртывание - тем, кому важно, чтобы изменения моментально появлялись на продакшене.</p>
23
<p>Представьте, что три автора пишут одну книгу вместе. В идеальной ситуации их роли распределены: один пишет, другой подаёт идеи, третий собирает материал и так далее. Важно, что у всей команды есть общее понимание замысла: о чём книга, кто главные герои, как они могут себя вести, а как - нет.</p>
23
<p>Представьте, что три автора пишут одну книгу вместе. В идеальной ситуации их роли распределены: один пишет, другой подаёт идеи, третий собирает материал и так далее. Важно, что у всей команды есть общее понимание замысла: о чём книга, кто главные герои, как они могут себя вести, а как - нет.</p>
24
<p>Но теперь представьте, что каждый автор действует сам по себе. Один меняет финал, другой меняет мотивацию персонажа, третий дополняет сюжет новыми событиями. Без общей системы согласования изменений работа над книгой превращается в хаос: события противоречат друг другу, повествование теряет логику.</p>
24
<p>Но теперь представьте, что каждый автор действует сам по себе. Один меняет финал, другой меняет мотивацию персонажа, третий дополняет сюжет новыми событиями. Без общей системы согласования изменений работа над книгой превращается в хаос: события противоречат друг другу, повествование теряет логику.</p>
25
<p>То же и с разработкой. Когда несколько программистов работают над одним проектом без CI/CD-системы, изменения в коде могут противоречить друг другу. Например, один разработчик обновляет библиотеку, а другой в это время дописывает код для старой версии - из-за такой невинной ошибки целый проект может рухнуть.</p>
25
<p>То же и с разработкой. Когда несколько программистов работают над одним проектом без CI/CD-системы, изменения в коде могут противоречить друг другу. Например, один разработчик обновляет библиотеку, а другой в это время дописывает код для старой версии - из-за такой невинной ошибки целый проект может рухнуть.</p>
26
<p>Довольно аналогий - пройдёмся по основным функциям CI:</p>
26
<p>Довольно аналогий - пройдёмся по основным функциям CI:</p>
27
<ul><li><strong>Статический анализ.</strong>Линтеры для разных языков программирования анализируют код, проверяют синтаксис, стиль и ищут ошибки. Это позволяет ещё до запуска программы найти проблемы с производительностью и отправить код на доработку.</li>
27
<ul><li><strong>Статический анализ.</strong>Линтеры для разных языков программирования анализируют код, проверяют синтаксис, стиль и ищут ошибки. Это позволяет ещё до запуска программы найти проблемы с производительностью и отправить код на доработку.</li>
28
<li><strong>Тестирование кода.</strong>На этом этапе система проверяет, не ломает ли обновление уже те функции, которые есть в программе, и насколько новый код работоспособен. Если автоматические тесты выявляют ошибку, то обновление возвращают программистам на доработку.</li>
28
<li><strong>Тестирование кода.</strong>На этом этапе система проверяет, не ломает ли обновление уже те функции, которые есть в программе, и насколько новый код работоспособен. Если автоматические тесты выявляют ошибку, то обновление возвращают программистам на доработку.</li>
29
</ul><ul><li><strong>Проверка качества.</strong>В каждой команде используют свои архитектурные решения, стандарты безопасности и требования к оформлению кода. На этом этапе проверяют, соблюдаются ли все эти правила.</li>
29
</ul><ul><li><strong>Проверка качества.</strong>В каждой команде используют свои архитектурные решения, стандарты безопасности и требования к оформлению кода. На этом этапе проверяют, соблюдаются ли все эти правила.</li>
30
</ul><p>Основные функции CD:</p>
30
</ul><p>Основные функции CD:</p>
31
<ul><li><strong>Сборка кода.</strong>Проект обычно представляет собой набор файлов с кодом, которые надо связать между собой, создать исполняемый файл, упаковать всё в <a>Docker-контейнер</a>или архив.</li>
31
<ul><li><strong>Сборка кода.</strong>Проект обычно представляет собой набор файлов с кодом, которые надо связать между собой, создать исполняемый файл, упаковать всё в <a>Docker-контейнер</a>или архив.</li>
32
<li><strong>Публикация релиза.</strong>Собранный проект надо доставить пользователям в виде обновления или загрузить на сервер, откуда его можно будет скачать.</li>
32
<li><strong>Публикация релиза.</strong>Собранный проект надо доставить пользователям в виде обновления или загрузить на сервер, откуда его можно будет скачать.</li>
33
<li><strong>Управление сертификатами.</strong>Разработчики используют множество сертификатов шифрования, которые обеспечивают безопасное взаимодействие приложения с сервером. Процесс обновления сертификатов автоматизируют, чтобы не забывать делать это вручную.</li>
33
<li><strong>Управление сертификатами.</strong>Разработчики используют множество сертификатов шифрования, которые обеспечивают безопасное взаимодействие приложения с сервером. Процесс обновления сертификатов автоматизируют, чтобы не забывать делать это вручную.</li>
34
</ul><p>Работа любой CI/CD-системы начинается с загрузки кода в систему контроля версий, например<a>GitHub</a>,<a>GitLab</a>или локальный<a>Git-репозиторий</a>. Из неё CI/CD-платформа получает исходный код проекта, собирает его и загружает на сервер.</p>
34
</ul><p>Работа любой CI/CD-системы начинается с загрузки кода в систему контроля версий, например<a>GitHub</a>,<a>GitLab</a>или локальный<a>Git-репозиторий</a>. Из неё CI/CD-платформа получает исходный код проекта, собирает его и загружает на сервер.</p>
35
<p>Что именно надо сделать с кодом, определяет конфигурация, которая описана в YAML-файле. Обычно в конфигурации указывают следующие шаги:</p>
35
<p>Что именно надо сделать с кодом, определяет конфигурация, которая описана в YAML-файле. Обычно в конфигурации указывают следующие шаги:</p>
36
<ul><li>как удалённая машина должна загрузить код;</li>
36
<ul><li>как удалённая машина должна загрузить код;</li>
37
<li>по каким правилам следует собрать приложение;</li>
37
<li>по каким правилам следует собрать приложение;</li>
38
<li>какие тесты запускать;</li>
38
<li>какие тесты запускать;</li>
39
<li>куда загрузить сборку, чтобы пользователи могли получить к ней доступ.</li>
39
<li>куда загрузить сборку, чтобы пользователи могли получить к ней доступ.</li>
40
</ul><p>Файл конфигурации хранится в Git-репозитории вместе с кодом. Вот так он выглядит в CI/CD-платформе GitHub Actions:</p>
40
</ul><p>Файл конфигурации хранится в Git-репозитории вместе с кодом. Вот так он выглядит в CI/CD-платформе GitHub Actions:</p>
41
name: Build and Test on: push: branches: - main pull_request: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Run tests run: npm test<p>Эта конфигурация автоматически запускается при каждом пул-реквесте в ветку main, тестирует код и собирает приложение:</p>
41
name: Build and Test on: push: branches: - main pull_request: jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Install dependencies run: npm install - name: Run tests run: npm test<p>Эта конфигурация автоматически запускается при каждом пул-реквесте в ветку main, тестирует код и собирает приложение:</p>
42
<ul><li>on - указывает, когда запускать CI/CD (например, при пуше в main);</li>
42
<ul><li>on - указывает, когда запускать CI/CD (например, при пуше в main);</li>
43
<li>jobs - список задач, которые выполняются в пайплайне;</li>
43
<li>jobs - список задач, которые выполняются в пайплайне;</li>
44
<li>runs-on - задаёт среду выполнения (ubuntu-latest);</li>
44
<li>runs-on - задаёт среду выполнения (ubuntu-latest);</li>
45
<li>steps - шаги сборки:</li>
45
<li>steps - шаги сборки:</li>
46
</ul><ul><li>checkout - загрузка кода;</li>
46
</ul><ul><li>checkout - загрузка кода;</li>
47
<li>npm install - установка зависимостей;</li>
47
<li>npm install - установка зависимостей;</li>
48
<li>npm test - запуск тестов.</li>
48
<li>npm test - запуск тестов.</li>
49
</ul><p>Выходит, что CI/CD-платформа получает код из репозитория проекта, а после этого обращается к конфигурации и пошагово выполняет действия из неё. В файле можно указать запуск тестов, линтера, сборку проекта, загрузку на сервер или в магазин приложений, уведомление в рабочий мессенджер и отправку электронного письма о выходе новой версии пользователям.</p>
49
</ul><p>Выходит, что CI/CD-платформа получает код из репозитория проекта, а после этого обращается к конфигурации и пошагово выполняет действия из неё. В файле можно указать запуск тестов, линтера, сборку проекта, загрузку на сервер или в магазин приложений, уведомление в рабочий мессенджер и отправку электронного письма о выходе новой версии пользователям.</p>
50
<p>Важно учитывать, что разные CI/CD-платформы используют разные YAML-схемы. Например, вот так выглядит определение среды выполнения в GitHub Actions:</p>
50
<p>Важно учитывать, что разные CI/CD-платформы используют разные YAML-схемы. Например, вот так выглядит определение среды выполнения в GitHub Actions:</p>
51
runs-on: ubuntu-latest<p>А вот так - в Amazon Web Services:</p>
51
runs-on: ubuntu-latest<p>А вот так - в Amazon Web Services:</p>
52
instance_type: ubuntu-latest<p>Разберём плюсы и минусы использования CI/CD-систем в разработке.</p>
52
instance_type: ubuntu-latest<p>Разберём плюсы и минусы использования CI/CD-систем в разработке.</p>
53
<p><strong>Плюсы</strong></p>
53
<p><strong>Плюсы</strong></p>
54
<ul><li><strong>Быстрые релизы.</strong>Грамотно настроенная CI/CD-платформа позволяет командам быстрее выпускать обновления и не задерживать код на разных этапах. Всё происходит автоматически и не стопорится.</li>
54
<ul><li><strong>Быстрые релизы.</strong>Грамотно настроенная CI/CD-платформа позволяет командам быстрее выпускать обновления и не задерживать код на разных этапах. Всё происходит автоматически и не стопорится.</li>
55
<li><strong>Выявление ошибок на ранних стадиях.</strong>Механизм непрерывной интеграции проверят код перед тем, как отправить его на сборку. Это позволяет сразу выявить ошибки, а не узнать о них после релиза.</li>
55
<li><strong>Выявление ошибок на ранних стадиях.</strong>Механизм непрерывной интеграции проверят код перед тем, как отправить его на сборку. Это позволяет сразу выявить ошибки, а не узнать о них после релиза.</li>
56
<li><strong>Прозрачный процесс разработки.</strong>С помощью CI/CD можно отслеживать, на каком этапе находится обновление и как можно оптимизировать доставку обновлений пользователям.</li>
56
<li><strong>Прозрачный процесс разработки.</strong>С помощью CI/CD можно отслеживать, на каком этапе находится обновление и как можно оптимизировать доставку обновлений пользователям.</li>
57
</ul><p><strong>Минусы</strong></p>
57
</ul><p><strong>Минусы</strong></p>
58
<ul><li><strong>Сложное внедрение.</strong>На этапе внедрения команде надо протестировать несколько CI/CD-платформ, найти оптимальную, настроить её и протестировать. Это обходится дорого и занимает много времени.</li>
58
<ul><li><strong>Сложное внедрение.</strong>На этапе внедрения команде надо протестировать несколько CI/CD-платформ, найти оптимальную, настроить её и протестировать. Это обходится дорого и занимает много времени.</li>
59
<li><strong>Высокие требования к культуре разработки.</strong>Для успешной работы системы разработчикам надо приучить себя писать тесты и исправлять известные ошибки до загрузки кода в репозиторий. Если этого не делать, то CI/CD-система даст мало выгоды.</li>
59
<li><strong>Высокие требования к культуре разработки.</strong>Для успешной работы системы разработчикам надо приучить себя писать тесты и исправлять известные ошибки до загрузки кода в репозиторий. Если этого не делать, то CI/CD-система даст мало выгоды.</li>
60
<li><strong>Поддержка CI/CD-платформы.</strong>В команде должны быть DevOps-инженеры, которые будут обновлять и обслуживать систему. Эту работу не стоит поручать разработчикам, так как у них не будет хватать времени на всё сразу.</li>
60
<li><strong>Поддержка CI/CD-платформы.</strong>В команде должны быть DevOps-инженеры, которые будут обновлять и обслуживать систему. Эту работу не стоит поручать разработчикам, так как у них не будет хватать времени на всё сразу.</li>
61
</ul><ul><li><strong>Ложные срабатывания на ошибки.</strong>Даже небольшие ошибки в коде могут прерывать сборку всего проекта. В таких ситуациях команды приходится отвлекаться от задач и выяснять, что пошло не так.</li>
61
</ul><ul><li><strong>Ложные срабатывания на ошибки.</strong>Даже небольшие ошибки в коде могут прерывать сборку всего проекта. В таких ситуациях команды приходится отвлекаться от задач и выяснять, что пошло не так.</li>
62
</ul><p>Давайте рассмотрим популярные CI/CD-платформы, которые позволяют настраивать конвейеры любой сложности и автоматизировать разработку, тестирование и развёртывание ПО.</p>
62
</ul><p>Давайте рассмотрим популярные CI/CD-платформы, которые позволяют настраивать конвейеры любой сложности и автоматизировать разработку, тестирование и развёртывание ПО.</p>
63
<p><a>Jenkins</a> - одна из самых известных и популярных CI/CD-платформ. У Jenkins открытый код, поэтому сервис можно бесплатно развернуть на собственном сервере. Это особенно важно для компаний, которые работают с чувствительными данными и не хотят доверять обработку кода сторонним системам. Также есть большая библиотека плагинов, с помощью которых можно добавлять поддержку новых функций.</p>
63
<p><a>Jenkins</a> - одна из самых известных и популярных CI/CD-платформ. У Jenkins открытый код, поэтому сервис можно бесплатно развернуть на собственном сервере. Это особенно важно для компаний, которые работают с чувствительными данными и не хотят доверять обработку кода сторонним системам. Также есть большая библиотека плагинов, с помощью которых можно добавлять поддержку новых функций.</p>
64
<p>В Jenkins можно настраивать CI/CD-процессы любой сложности и оптимизировать сборку под любые платформы. Единственный минус в том, что в Jenkins довольно сложный процесс настройки конфигурации, который может запутать новичков.</p>
64
<p>В Jenkins можно настраивать CI/CD-процессы любой сложности и оптимизировать сборку под любые платформы. Единственный минус в том, что в Jenkins довольно сложный процесс настройки конфигурации, который может запутать новичков.</p>
65
<p><a>GitHub Actions</a> - CI/CD-платформа, интегрированная в сервис GitHub. Решение отлично подойдёт командам и разработчикам, которые хранят код своих проектов на GitHub. Конфигурации настраивать проще, чем в Jenkins. Также есть библиотека шаблонов для разных платформ.</p>
65
<p><a>GitHub Actions</a> - CI/CD-платформа, интегрированная в сервис GitHub. Решение отлично подойдёт командам и разработчикам, которые хранят код своих проектов на GitHub. Конфигурации настраивать проще, чем в Jenkins. Также есть библиотека шаблонов для разных платформ.</p>
66
<p>Минус платформы в том, что вся обработка кода происходит в облаке. Это ставит под угрозу данные проектов, которым важен высокий уровень безопасности.</p>
66
<p>Минус платформы в том, что вся обработка кода происходит в облаке. Это ставит под угрозу данные проектов, которым важен высокий уровень безопасности.</p>
67
<p><a>GitLab CI/CD</a> - система, интегрированная в сервис GitLab. Она очень похожа на GitHub Actions, но доступна в двух версиях: облачной и локальной. Если в приоритете скорость работы и простота, то можно воспользоваться облачной версией. Для повышения безопасности лучше развернуть GitLab CI/CD на собственном сервере.</p>
67
<p><a>GitLab CI/CD</a> - система, интегрированная в сервис GitLab. Она очень похожа на GitHub Actions, но доступна в двух версиях: облачной и локальной. Если в приоритете скорость работы и простота, то можно воспользоваться облачной версией. Для повышения безопасности лучше развернуть GitLab CI/CD на собственном сервере.</p>
68
<p><a>TeamCity</a> - коммерческое решение от компании JetBrains, доступное по подписке. Есть как облачная версия, так и локальная. Один из плюсов системы в том, что он интегрирован со средами разработки от JetBrains, поэтому разработчики могут настраивать всё в одном приложении и не переключаться между приложениями.</p>
68
<p><a>TeamCity</a> - коммерческое решение от компании JetBrains, доступное по подписке. Есть как облачная версия, так и локальная. Один из плюсов системы в том, что он интегрирован со средами разработки от JetBrains, поэтому разработчики могут настраивать всё в одном приложении и не переключаться между приложениями.</p>
69
<p>Настраивать конфигурации в TeamCity можно с помощью YAML-файлов или веб-интерфейса. Второй способ подходит новичкам, которые ещё не могут с ходу написать скрипт для CI/CD-пайплайна.</p>
69
<p>Настраивать конфигурации в TeamCity можно с помощью YAML-файлов или веб-интерфейса. Второй способ подходит новичкам, которые ещё не могут с ходу написать скрипт для CI/CD-пайплайна.</p>
70
<p><a>Travis CI</a> - облачная CI/CD-система с бесплатным тарифом для опенсорс-проектов и интеграцией с GitHub. Для компаний есть локальная версия с упором на безопасность. Конфигурации в Travis CI настраиваются с помощью YAML-файла.</p>
70
<p><a>Travis CI</a> - облачная CI/CD-система с бесплатным тарифом для опенсорс-проектов и интеграцией с GitHub. Для компаний есть локальная версия с упором на безопасность. Конфигурации в Travis CI настраиваются с помощью YAML-файла.</p>
71
<p><a>Xcode Cloud</a> - CI/CD-система от Apple, адаптированная для разработчиков iOS-приложений. В ней есть интеграции со средой разработки Xcode, системой управления релизами App Store Connect и платформой тестирования TestFlight. К системе можно подключить сервисы контроля версий GitHub, GitLab, Bitbucket и локальные репозитории.</p>
71
<p><a>Xcode Cloud</a> - CI/CD-система от Apple, адаптированная для разработчиков iOS-приложений. В ней есть интеграции со средой разработки Xcode, системой управления релизами App Store Connect и платформой тестирования TestFlight. К системе можно подключить сервисы контроля версий GitHub, GitLab, Bitbucket и локальные репозитории.</p>
72
<p>Бесплатно разработчикам предоставляют 25 часов сборки в месяц. По подписке за 4000 долларов можно расширить лимит до 10 000 часов. Из минусов можно отметить, что Xcode Cloud - облачное решение, поэтому все данные обрабатываются на серверах Apple.</p>
72
<p>Бесплатно разработчикам предоставляют 25 часов сборки в месяц. По подписке за 4000 долларов можно расширить лимит до 10 000 часов. Из минусов можно отметить, что Xcode Cloud - облачное решение, поэтому все данные обрабатываются на серверах Apple.</p>
73
<p>Как мы уже убедились, выбор CI/CD-платформ очень большой. Помимо популярных решений, есть много нишевых, которые тоже предлагают удобные инструменты. Во время выбора платформы важно учитывать следующие факторы:</p>
73
<p>Как мы уже убедились, выбор CI/CD-платформ очень большой. Помимо популярных решений, есть много нишевых, которые тоже предлагают удобные инструменты. Во время выбора платформы важно учитывать следующие факторы:</p>
74
<p><strong>Сложность настройки.</strong>Если платформу можно легко развернуть и настроить, то команда сможет быстрее начать автоматизировать разработку. Также важно учитывать, что чем больше в системе запутанных механизмов, тем выше вероятность их частого выхода из строя. Лучше выбирать простые системы с подробной документацией и активной службой поддержки.</p>
74
<p><strong>Сложность настройки.</strong>Если платформу можно легко развернуть и настроить, то команда сможет быстрее начать автоматизировать разработку. Также важно учитывать, что чем больше в системе запутанных механизмов, тем выше вероятность их частого выхода из строя. Лучше выбирать простые системы с подробной документацией и активной службой поддержки.</p>
75
<p>Также учитывайте, что если в команде много новичков, то лучше обратить внимание на платформу с визуальным редактором конфигураций. Так начинающим разработчикам будет проще разобраться с настройкой, и они быстрее втянутся в работу.</p>
75
<p>Также учитывайте, что если в команде много новичков, то лучше обратить внимание на платформу с визуальным редактором конфигураций. Так начинающим разработчикам будет проще разобраться с настройкой, и они быстрее втянутся в работу.</p>
76
<p><strong>Предустановленный софт.</strong>Чем больше инструментов доступно из коробки, тем меньше времени придётся тратить на ручную настройку сторонних систем. Например, если вы разрабатываете приложение для Android, то платформа должна поддерживать работу с Java Development Kit и Gradle, а iOS-разработчикам нужны Xcode и CocoaPods.</p>
76
<p><strong>Предустановленный софт.</strong>Чем больше инструментов доступно из коробки, тем меньше времени придётся тратить на ручную настройку сторонних систем. Например, если вы разрабатываете приложение для Android, то платформа должна поддерживать работу с Java Development Kit и Gradle, а iOS-разработчикам нужны Xcode и CocoaPods.</p>
77
<p><strong>Стоимость и время сборок.</strong>Коммерческие платформы берут плату за минуты сборок в месяц. Для небольших проектов хватит 500-1000 минут в бесплатных тарифах, а крупным компаниям важно понимать, из чего складывается цена. Обязательно уточните это в отделе продаж или на сайте сервиса. Также учитывайте, что если вам понадобится более мощный сервер, то за него также придётся доплатить.</p>
77
<p><strong>Стоимость и время сборок.</strong>Коммерческие платформы берут плату за минуты сборок в месяц. Для небольших проектов хватит 500-1000 минут в бесплатных тарифах, а крупным компаниям важно понимать, из чего складывается цена. Обязательно уточните это в отделе продаж или на сайте сервиса. Также учитывайте, что если вам понадобится более мощный сервер, то за него также придётся доплатить.</p>
78
<p><strong>Сторонние интеграции.</strong>Убедитесь, что к системе можно подключать сторонние сервисы. Например, Google Play для автоматической публикации приложений, Slack для отправки уведомлений или GitHub для хранения кода. Чем больше интеграций доступно, тем больше процессов можно автоматизировать.</p>
78
<p><strong>Сторонние интеграции.</strong>Убедитесь, что к системе можно подключать сторонние сервисы. Например, Google Play для автоматической публикации приложений, Slack для отправки уведомлений или GitHub для хранения кода. Чем больше интеграций доступно, тем больше процессов можно автоматизировать.</p>
79
<ul><li>CI/CD - это автоматизированный процесс разработки и доставки ПО, включающий в себя непрерывную интеграцию, доставку и развёртывание.</li>
79
<ul><li>CI/CD - это автоматизированный процесс разработки и доставки ПО, включающий в себя непрерывную интеграцию, доставку и развёртывание.</li>
80
<li>Непрерывная интеграция (CI) отвечает за проверку кода с помощью линтеров и тестов.</li>
80
<li>Непрерывная интеграция (CI) отвечает за проверку кода с помощью линтеров и тестов.</li>
81
<li>Непрерывная доставка и развёртывание (CD) готовит проект к релизу или сразу выкатывает его в продакшен без участия разработчиков.</li>
81
<li>Непрерывная доставка и развёртывание (CD) готовит проект к релизу или сразу выкатывает его в продакшен без участия разработчиков.</li>
82
<li>Главная цель CI/CD - ускорение разработки за счёт автоматизации рутинных задач.</li>
82
<li>Главная цель CI/CD - ускорение разработки за счёт автоматизации рутинных задач.</li>
83
<li>При выборе CI/CD-платформы стоит учитывать стоимость каждой сборки, возможность интегрировать сторонние сервисы и сложность настройки системы.</li>
83
<li>При выборе CI/CD-платформы стоит учитывать стоимость каждой сборки, возможность интегрировать сторонние сервисы и сложность настройки системы.</li>
84
</ul><a>Практический курс: "Профессия DevOps-инженер" Узнать о курсе</a>
84
</ul><a>Практический курс: "Профессия DevOps-инженер" Узнать о курсе</a>