Статья опубликована в рамках: Научного журнала «Студенческий» № 5(259)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4
ЭВОЛЮЦИЯ CI/CD: ОСНОВНЫЕ ЭТАПЫ И ИНСТРУМЕНТЫ РАЗРАБОТКИ
АННОТАЦИЯ
В современном мире, при повсеместном внедрении в нашу жизнь всевозможных гаджетов, закономерным процессом стало глобальное развитие большого количества различного рода программного обеспечения. Чтобы успевать за прогрессом постоянно меняющихся технологий, в целях успешной работы компаний возникает вопрос о сокращении времени на технологическую разработку и внедрение изменений, в связи с чем зачастую упоминаются непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD), которые позволяют упростить рутинные задачи в цикле разработки, его ускорения и повышения качества изобретаемого программного обеспечения.
Данная научная статья предоставляет собой всесторонний взгляд на цикл CI/CD: от исследования его сущности и анализа преимуществ и недостатков до рассмотрения инструментов, позволяющих его реализовать. Особое внимание уделяется ключевым аспектам, на которые следует обратить внимание при внедрении CI/CD в проект.
Ключевые слова: программное обеспечение, непрерывная интеграция, непрерывная поставка, цикл, Continuous Integration (CI), Continuous Delivery/Deployment (CD)
Введение
Непрерывная интеграция, далее – Continuous Integration (CI) и непрерывная поставка – Continuous Delivery/Deployment (CD) представляют собой основополагающие методологии в сфере разработки программного обеспечения, созданные с целью улучшения и автоматизации процессов снабжения оборудования компьютера.
Непрерывная интеграция (CI) направлена на ее автоматизацию, объединение изменений кода от нескольких участников в единый программный проект. В основе Continuous Integration (непрерывной интеграции) лежит система контроля версий кода (например, git), также дополнительно используются инструменты для проведения тестов, с целью осуществления проверок на качество кода и стиля синтаксиса, а также для сборки проекта и подобных интеграционных действий. Данная методология предполагает автоматическую сборку кода, наличие специальных тестов и синтез изменений в основную кодовую базу при каждом новом вхождении или изменении.
Следует отметить, что термин Continuous Integration (CI) может использоваться в двух основных контекстах: «продолжительная интеграция» и «непрерывная интеграция». В рамках данной статьи оба термина используются взаимозаменяемо для обозначения практики регулярной и автоматизированной интеграции изменений в код программного обеспечения.
Непрерывная поставка (CD) направлена на автоматизацию внедрения проекта в различные среды, такие как сфера разработки (development), обстановка тестирования (test/stage), фон эксплуатации (production) и многие другие. Непрерывная поставка CD продолжает процесс продолжительной интеграции CI и использует дополнительные инструменты для перенаправления проекта в нужную среду.
При этом следует отметить, что сам процесс поставки программного обеспечения (Software Delivery Process) представляет собой последовательность шагов и действий, направленных на разработку, тестирование и развертывание программного продукта. Он охватывает все этапы жизненного цикла программного обеспечения – от написания кода до его предоставления конечным пользователям. Основная цель процесса поставки программного обеспечения – предоставить эффективное, стабильное и безопасное внедрение новых функций или преобразований в программном продукте.
В итоге, методологии CI/CD образуют замкнутый цикл, представленный на рисунке 1.
Рисунок 1. CI/CD цикл
Цель продолжительной интеграции CI – обеспечить быструю обратную связь, содержащую информацию о качестве кода при каждом изменении, что достигается автоматической сборкой и тестированием при каждой фиксации доставки в репозиторий. Если тесты не проходят, то непрерывная интеграция CI предупреждает о проблеме, позволяя разработчикам быстро ее решить.
Цель непрерывной поставки CD – обеспечить автоматическое обеспечение приложения в среду, что достигается автоматической сборкой, тестированием, интеграцией и развертыванием приложения. Если тесты проходят успешно, то приложение автоматически становится доступным для пользователей.
Сам процесс, включающий в себя: автоматическую сборку, тестирование и развертывание кода во время разработки программного обеспечения часто называют пайплайном (pipeline) или конвейером [7]. Также в некоторых инструментах продолжительной интеграции и непрерывной поставки CI/CD пайплайном называют сам элемент, в котором описываются все этапы от клонирования кода и сборки до разворачивания проекта.
Итак, CI/CD конвейер обычно состоит из следующих этапов:
- Разработчик пишет код и отправляет в репозиторий.
- CI-сервер (сервер продолжительной интеграции) автоматически скачивает изменения из репозитария и собирает приложение.
- Запускаются автоматические тесты и дополнительные проверки (например, на безопасность и синтаксис).
- В случае ошибок, процесс останавливается, и разработчик/разработчики уведомляются о найденных проблемах. При успешном завершении тестов и проверок собранная версия отправляется в хранилище артефактов.
- Запускается процесс разворачивания обновленного проекта в нужной среде, которая определяется исходя из характера изменений, вызвавших данный алгоритм.
На рисунке 2 представлены описанные этапы CI/CD конвейера.
Рисунок 2. CI/CD пайплайн поэтапно
Приведенная выше модель CI/CD является некоторым шаблоном или парадигмой. Но в каждом конкретном случае могут наблюдаться определенные особенности. Может быть больше или меньше тестов, возможен этап анализа кода на наличие ошибок либо иных аспектов. Также могут быть дополнительные оповещения и согласования от ответственных лиц, например, в случаях, когда разворачивание происходит в среду эксплуатации (production).
Использование CI/CD конвейеров позволяет добиться следующих преимуществ:
- Улучшение качества кода. Уменьшение количества рутинных задач увеличивает время на разработку, а также ранее обнаружение ошибок. Запуск тестов, синтаксический анализ кода и сканирование на уязвимость при каждом обновлении в репозитарии также получают более продолжительный временной промежуток.
- Ускорение процесса разработки происходит благодаря автоматизации рутинных действий по сборке, проверке и разворачиванию проекта.
- Улучшение процесса разворачивания проекта характеризуется автоматизацией распространения уменьшения шансов на ошибки (человеческий фактор) и сокращает время распаковки.
- Улучшение коммуникации. В процессе могут отправляться уведомления о проценте покрытия кода тестами и найденных замечаниях, об успешности работы и ошибках.
Инструменты, используемые для обеспечения процессов CI/CD
В процессе CI/CD широко применяются специализированные инструменты для автоматизации, включая средства описания и настройки пайплайнов и их этапов. К таким инструментам можно отнести Jenkins, GitLab CI/CD, TeamCity, Travis CI, CircleCI.
Помимо инструментов CI/CD в процессе, указанном выше, присутствуют или могут присутствовать другие составляющие, такие как:
- Хранилище кода / репозитарии (GitLab, GitHub, BitBucket …)
- Инструменты для учета задач и ведения документации (Jira, Confluence …)
- Инструменты создания и конфигурирования инфраструктуры (Terraform, ansible, puppet …)
- Инструменты для тестирования кода, сборки отчетов о тестировании, проверки качества кода (Junit, SonarQube..)
- Облачные провайдеры (AWS, Yandex Cloud, …)
- Инструменты контейнерезации и управления контейнерами (Docker, Kubernetes, Openshift …)
Рассмотрим инструменты CI/CD более подробно.
Jenkins
Jenkins – это один из самых популярных инструментов для реализации CI/CD процессов, который насчитывает огромное сообщество пользователей и множество плагинов для расширения функционала. Jenkins поддерживает большое количество систем контроля версий и сборщиков проектов, а также обладает мощными средствами конфигурации и проверки качества. Однако, у Jenkins есть некоторые недостатки, такие как сложность настройки и управления большим количеством задач [1].
Jenkins – проект с открытым исходным кодом, который написан на Java. Имеет значительное количество плагинов, добавляющих удобства использования и позволяющих интегрироваться с большим числом инструментов. Среди плагинов есть как официально поддерживаемые, так и созданные энтузиастами. Кроме того, существует возможность разработки собственных плагинов [1].
Достоинства данного проекта
- Гибкость и расширяемость: Jenkins можно настроить и расширить в соответствии с потребностями разработки.
- Большое сообщество и поддержка: Jenkins имеет активную коалицию пользователей и разработчиков. А значит, ответы на большинство вопросов уже есть и их просто нужно найти. Также насчитывается большое количество документации, существуют форумы, где можно задать любые интересующие вопросы, получив соответствующие ответы на них.
- Масштабируемость: Jenkins может работать с проектами любого размера, от небольших персональных разработок до корпоративных. В Jenkins можно добавлять произвольное количество "рабочих" узлов, на которых выполняются пайплайны, и легко настраивать параллельные сборки на этих центрах.
- Доступность: Jenkins – открытый и бесплатный инструмент, доступный для всех [1].
Недостатки:
- Сложность настройки. Настройка Jenkins может быть сложной задачей для новых пользователей. Необходимо уделить время на ее изучение. Однако существует большое количество обучающих материалов в открытом доступе, что упрощает задачу для новичков.
- Ограниченные ресурсы. Jenkins может потреблять значительные потенциалы сервера, особенно при работе с большим количеством проектов и сборок, что может потребовать выделения дополнительных резервов для поддержки его работы.
- Отсутствие интуитивного интерфейса. Интерфейс Jenkins не всегда является интуитивно понятным и может быть сложным для некоторых пользователей, поэтому его освоение требует времени и усилий [1].
В целом, Jenkins представляет собой мощный инструмент для автоматизации процессов разработки программного обеспечения. Гибкость, универсальность и активная поддержка сообщества делают его популярным среди разработчиков. Тем не менее, сложность настройки и потребление ресурсов могут стать некоторыми ограничениями при использовании данного инструмента.
Travis CI
Travis CI – это облачный инструмент для реализации CI/CD, который позволяет быстро и легко настроить автоматическую сборку и тестирование проекта. Travis CI интегрируется с GitHub и Bitbucket, что упрощает работу с системами контроля версий и управление задачами. Однако, Travis CI имеет ограниченный функционал и требует подписки для использования всех возможностей [3].
Достоинства
- Простота использования. У Travis CI простой и интуитивно понятный интерфейс, а значит, новым пользователям будет легче его освоить. Также имеется достаточное количество документации и руководства к применению.
- Интеграция с GitHub: Travis CI интегрируется напрямую с репозитариями на платформе GitHub, что может стать важным фактором для команд, использующих рассматриваемое хранилище кода.
- Облачная инфраструктура. Travis CI предоставляет облачные ресурсы для выполнения сборок и тестирования. Следовательно, команде не надо самостоятельно следить за инфраструктурой, поддерживать ее и обновлять, что также позволяет масштабировать процессы непрерывной интеграции и доставки в зависимости от потребностей проекта.
- Поддержка различных языков и платформ. Travis CI обеспечивает многостороннюю совместимость с разными языками программирования, включая Java, Python, Ruby, JavaScript и другие. Кроме того, он способен взаимодействовать с различными операционными системами, такими как Linux, macOS, и Windows, что делает его подходящим при выборе для разнообразных проектов с учетом используемых технологий и платформ [3].
Недостатки
- Ограниченная бесплатная версия. Версия без оплаты Travis CI имеет ограничения по количеству и времени выполнения сборок, что может быть недостаточно для крупных проектов или команд.
- Отсутствие локального выполнения. Travis CI работает только в облачной среде, а значит, разработчики не могут осуществлять сборки и тестирование локально на своих компьютерах.
- Ограниченные возможности настройки. Travis CI предоставляет недостаточные возможности для регулирования процессов соединения и тестирования. Если команде понадобятся сложные сценарии сборок, то подобное обстоятельство может вызвать сложности или оказаться нереализуемым [3].
В общем, Travis CI представляет собой удобный и легкий в использовании инструмент. Интеграция с GitHub, использование облачной инфраструктуры и поддержка различных языков делают его популярным среди разработчиков. Тем не менее, ограничения бесплатной версии и отсутствие возможности локального выполнения могут стать некоторыми препятствиями для использования этой платформы.
GitLab CI/CD
GitLab CI/CD – это инструмент для реализации CI/CD, который интегрируется непосредственно с GitLab, что позволяет управлять всем процессом разработки в одном месте. GitLab CI/CD обладает мощными средствами конфигурации и контроля качества, а также поддерживает интеграцию с различными системами проверки версий и сборщиками проектов. Однако, GitLab CI/CD может быть сложен в настройке и управлении для некоторых пользователей [2].
Достоинства
- Интеграция с GitLab. GitLab CI/CD объединяется непосредственно с репозитариями на платформе GitLab, что делает его удобным для разработчиков, использующих данную платформу с целью управления своим кодом.
- Широкие возможности настройки. GitLab CI/CD предоставляет гибкие возможности для регулирования процессов сборки и тестирования.
- Облачная и локальная инфраструктура. GitLab CI/CD поддерживает как облачные ресурсы, так и локальные серверы для выполнения сборок.
- Широкая поддержка языков и платформ. GitLab CI/CD сохраняет большое количество языков программирования и платформ [2].
Недостатки
- Сложность настройки. Синхронизация GitLab CI/CD может быть сложной для новых пользователей. Однако имеется достаточное количество соответствующей документации и руководства для клиентов.
- Ограниченные возможности бесплатной версии. Вариант без оплаты GitLab CI/CD имеет ограничения по количеству и времени выполнения сборок, что может быть недостаточно для крупных проектов или команд.
- Требуется наличие серверов. Для выполнения сборок и тестирования в локальной инфраструктуре необходимо иметь собственный сервер, что требует дополнительных средств и усилий [2].
В общем, GitLab CI/CD представляет собой эффективный инструмент для поддержания непрерывной интеграции и доставки в процессе разработки программного обеспечения, предоставляя разработчикам обширные возможности настройки и интеграции с основной платформой GitLab. Тем не менее, сложность процесса настройки и наличие ограничений в бесплатной версии могут представлять собой определенные трудности при использовании данного инструмента.
CircleCI
CircleCI – это облачный инструмент для реализации CI/CD, который позволяет быстро и легко настроить автоматическую сборку и тестирование проекта. CircleCI интегрируется с GitHub и Bitbucket, что упрощает работу с системами контроля версий и управление задачами. Данный инструмент предоставляет мощные средства конфигурации, гарантирует контроль качества кода и совместим с разнообразными инструментами сборки проектов. Однако важно отметить, что при расширении инициатив использование CircleCI может быть сопряжено с заметными затратами, что прежде всего обусловлено как увеличением объема работы и требованиями к более высоким ресурсам, так и возможностью дополнительной оплаты за расширенный функционал и прикладные сервисы [4].
Достоинства
- Простая настройка: CircleCI предлагает простой и интуитивно понятный процесс синхронизации. Для определения шагов сборки, тестирования и развертывания используются конфигурационные файлы в формате YAML, которые достаточно распространены и чаще всего не потребуют дополнительного изучения [4].
- Облачная инфраструктура. CircleCI предоставляет облачные ресурсы для выполнения сборок и тестирования. Не нужно содержать собственные сервера и соответствующую базу.
- Широкая поддержка языков и платформ. CircleCI поддерживает большое количество языков программирования и программных документов.
- Интеграция с другими инструментами заключается в том, что CircleCI легко интегрируется с другими инструментами разработки, такими как GitHub, Bitbucket и Slack (мессенджер). Это позволяет разработчикам получать уведомления о результатах сборок и тестирования, управляя процессами CI/CD находясь в пределах одной локации [4].
Недостатки
- Ограниченные возможности бесплатной версии. Вариант без оплаты CircleCI имеет ограничения по количеству и времени выполнения сборок, что может быть недостаточно для крупных проектов или команд.
- Ограниченная гибкость настройки. CircleCI предлагает не очень гибкие возможности настройки процессов сборки и тестирования. Некоторые сложные сценарии могут потребовать дополнительного регулирования или кастомизации.
- Ограниченная интеграция с GitLab. CircleCI не интегрируется напрямую с репозитариями на платформе GitLab [4].
В целом, CircleCI – это простой в использовании инструмент для непрерывной интеграции и доставки, который предоставляет облачные ресурсы и широкую поддержку языков и платформ. Однако, ограничения бесплатной версии и ограниченная гибкость настройки могут быть некоторыми препятствиями при использовании инструмента.
TeamCity
TeamCity – это инструмент для реализации CI/CD, который имеет мощные средства управления и конфигурации. TeamCity поддерживает множество систем контроля версий и сборщиков проектов, а также обладает средствами контроля качества и мониторинга проекта. Однако, TeamCity может быть сложным в настройке и управлении для некоторых пользователей [5].
Достоинства
- Удобный интерфейс и настройка. TeamCity предлагает интуитивно понятный интерфейс и простой процесс синхронизации. Разработчики могут легко определить шаги сборки, тестирования и развертывания, используя визуальный конфигуратор.
- Поддержка различных языков и площадок. TeamCity поддерживает большое количество языков программирования и платформ, включая Java, .NET, Ruby, Python и другие.
- Масштабируемость и гибкость. TeamCity обладает высокой изменяемостью и пластичностью настройки, что позволяет интегрироваться с различными инструментами разработки и создавать сложные сценарии.
- Синтез с другими инструментами. TeamCity легко интегрируется с другими инструментами разработки [5].
Недостатки
- Платная лицензия. TeamCity является коммерческим инструментом и требует приобретения разрешения для использования.
- Необходимость установки и настройки собственного сервера. TeamCity требует инсталляцию и синхронизацию собственного сервера для выполнения сборок и тестирования.
- Ограниченная интеграция с GitLab. TeamCity не интегрируется напрямую с репозитариями на платформе GitLab [5].
В целом, TeamCity – это мощный инструмент для непрерывной интеграции и доставки, который предоставляет удобный интерфейс, гибкость настройки и широкую поддержку языков и платформ. Однако, платная лицензия и необходимость установки собственного сервера могут стать некоторыми ограничениями при использовании рассматриваемого инструмента.
Механизмов для реализации CI/CD куда больше, и каждый имеет свои достоинства и недостатки, а выбор зависит от потребностей пользователя.
При принятии решения следует учитывать несколько важных факторов [6]:
- Решение может быть, как бесплатным, так и платным, при этом важно оценить, предоставляется ли план использования без оплаты, и достаточно ли его функционала для нужд проекта.
- Инфраструктура – облачная или локальная. Облачная инфраструктура избавляет от необходимости поддерживать и обновлять свои сервера. Однако иногда иметь свою базу и возможность выполнять на ней пайплайн очень удобна.
- Интеграции с хранилищами кода и другими важными для проекта инструментами. В данном аспекте не возникает трудностей: по изменениям в репозитарии запускается весь процесс, поэтому с ним важна удобная интеграция. Однако следует обратить внимание на мессенджеры, инструменты для документации, сборки и разворачивания и подобное им.
- В каком формате задается пайплайн – какой язык для этого используется, и насколько команда / разработчик с ним знакомы – это может повлиять на то, сколько времени займет построение процесса CI/CD.
- Удобство использования представляет собой существенный фактор, влияющий на время освоения инструмента и развертывание процесса CI/CD. Наличие хорошей документации и интуитивно понятного интерфейса значительно ускоряют внедрение инструмента, в отличие от ситуации, когда упомянутые выше аспекты оставляют желать лучшего.
Зная, что такое CI/CD конвейеры и какие инструменты применяются, рассмотрим практические советы, которые помогут внедрить CI/CD процессы в проект.
Практические советы
Представим несколько рекомендаций, которые следует учесть при внедрении CI/CD процессов, чтобы обеспечить эффективность и поддержку разрабатываемого проекта.
- Определите цели внедрения CI/CD. Чтобы определить, чего вы хотите достичь с помощью CI/CD следует посмотреть на наиболее актуальные проблемы или недостатки в текущем процессе взаимодействия разработчиков, тестировании и разворачивании кода. Исходя из самых больших проблем, целью может быть простая автоматизация процесса (уменьшение рутинных задач), улучшение качества кода или иное.
- Выберите подходящий инструмент. Рассмотрите проект и инфраструктуру. Ответьте для себя на следующие вопросы. Используете вы облачные технологии или нет? Какое хранилище кода используется? Интеграция с какими инструментами крайне важна? Готовы ли вы выделить средства на инструмент или рассматриваете исключительно бесплатные варианты? Исходя из инструмента, можно начинать процесс, ознакомиться с ним, почитать документацию и поискать примеры.
- Настройте автоматизацию. Ключевой аспект CI/CD – автоматизация процессов. Если сборку проекта или запуск тестов невозможно выполнить без участия человека – CI/CD процесс не получится. Если до этого приложение разворачивалась путем копирования файлов и запуском сервиса, возможно полезно рассмотреть вероятность контейнеризации приложения. Контейнеризация позволяет создавать изолированные среды для приложения, облегчает его разворачивание.
- Обучайте команду. Важно чтобы все члены команды хотя бы на базовом уровне понимали, как работает процесс и как они могут его использовать для улучшения своей работы. Также коллеги могут предложить интересные идеи, чего, по их мнению, не хватает или, что неудобно.
- Подумайте над безопасностью. Автоматизация – это хорошо, но, если кто-то без санкционированного доступа может добраться до вашего CI/CD конвейера и внести в него правки, или запустить разворачивание приложения в промышленную среду – возникает серьезная проблема.
- Улучшайте CI/CD процесс. Полезно оптимизировать и анализировать процессы. Можно добавлять новые этапы, улучшать скорость различных ступеней и удобство использования конвейером.
- Используйте метрики. Анализ статистики по времени сборки, количеству ошибок, покрытию кода тестами позволит оценить эффективность CI/CD процесса и понять, что можно улучшить.
Соблюдение предоставленных рекомендаций облегчит процесс внедрения CI/CD. Основным является то, что команда должна прийти к консенсусу относительно того, что она хочет получить от CI/CD, какими инструментами будет пользоваться и каких практик будет придерживаться. Однако стоит помнить, что в настоящее время все меняется очень быстро, появляются новые технологии и методологии, и выстроенный когда-то процесс может стать абсолютно неудобным. В этом случае правильнее всего будет поменять алгоритм действия, учитывая актуальные цели и проблемы.
Тенденции
В заключение рассмотрим несколько тенденций, которые могут быть интересны в данный момент при построении CI/CD процесса.
Среди направлений развития можно выделить следующие пути:
- Облачные технологии;
- Интеграция с инструментами управления проектами;
- Особое внимание к безопасности;
- Искусственный интеллект и нейронные сети.
Рассмотрим данные пункты более подробно, проанализировав их потенциальную применимость при построении CI/CD процесса.
Облачные технологии
Облачные технологии (англ. Cloud Computing) – это подход к хранению и обработке данных, при котором используются ресурсы удаленных серверов. Пользователь выделяет себе ресурсы и создает виртуальные машины, сети, и другие инструменты, при этом никак не заботясь о физической составляющей инфраструктуры.
Преимущества облачных технологий:
- Экономия: использование облачных технологий позволяет сократить расходы на оборудование и его обслуживание. Пользователь платит только за потребляемые ресурсы, не заботясь о его техническом обслуживании, плате за размещение и содержание, оплате работникам, которые за ним следят.
- Гибкость: облачные технологии позволяют плавно использовать ресурсы в зависимости от потребностей. Можно сократить или увеличить размер потребляемых источников очень быстро.
- Геораспределенность: у большинства облачных провайдеров можно выделить себе ресурсы в разных виртуальных центрах обработки данных (вЦОД), тем самым обеспечив большую надежность инфраструктуры.
Недостатки облачных технологий
- Зависимость от интернета: для работы с сервером необходимо стабильное интернет соединение. Если прямого доступа к серверу нет, то связь отсутствует.
- Безопасность: важно учитывать, что пользователь не имеет полный контроль над физическими серверами и теми, кто имеет к ним доступ. То, что данные компании хранятся на удаленных серверах необходимо учитывать и применять дополнительные меры безопасности.
Облачные технологии могут быть использованы для хранения кода, тестирования и развертывания приложений в рамках CI/CD. Также некоторые облачные провайдеры имеют инструменты, которые способны облегчить построение CI/CD конвейера. Пример можно посмотреть в источнике [7].
Интеграция с инструментами управления проектами
Под инструментами управления проектами имеются в виду устройства для контроля над задачами и приспособления для ведения документации по проекту, например, Jira и Confluence.
Ранее упоминалось что в процессе CI/CD полезно использовать различные уведомления для улучшения коммуникации и ускорения процессов. Помимо почты или различных мессенджеров можно обновлять информацию в соответствующих задачах или на странице с документацией.
Во-первых, это в явном виде сохранит историю – что и когда происходило с проектом, во-вторых, улучшит коммуникацию (например, в задаче по добавлению какого-либо функционала в проект будут видны все результаты сборки и куда данные обновления были развернуты).
Безопасность
Безопасность – важный аспект в любых проектах. При этом защищенность приложения включает в себя разные аспекты:
- Аутентификация и авторизация в приложении;
- Защита данных в приложении (БД, хранилища секретов и т.п.) ;
- Защита от утечки данных;
- Использование безопасных библиотек в проекте;
- И другое.
CI/CD позволяет улучшить безопасность проекта сам по себе, способствуя быстрому обнаружению и исправлению ошибки, уменьшению шансов на неудачу в развертывании приложения. Однако дополнительно используются инструменты для статического анализа кода, проверки используемых библиотек на наличие уязвимостей и другое.
Искусственный интеллект и нейронные сети
Искусственный интеллект (ИИ) и нейронные сети играют все более важную роль в информационных технологиях благодаря своей способности обрабатывать большие объемы данных, выявлять скрытые закономерности, принимать решения и автоматизировать процессы. В том числе они имеют потенциальное применение в CI/CD.
Заключение
CI/CD – это методология, которая применяется в целях улучшения качества кода, уменьшения часов на разработку, а также сокращения затрачиваемого времени на развертывание приложения.
CI/CD процессы полностью охватывают цикл разработки, начиная от написания кода, заканчивая его расширением в рабочей среде и от того, насколько алгоритм правильно выстроен, будет зависеть удобство использования и эффективность приложения.
Чтобы выстроить процессы в проекте необходимо:
- Определить первоочередные цели;
- Выбрать инструменты, которые подходит для проекта и стремлений;
- Определить набор практик, которым необходимо следовать при разработке.
Список литературы:
- Документация Jenkins [Электронный ресурс]. – Режим доступа: https://www.jenkins.io/doc/ (дата обращения: 21.10.2023)
- Документация GitLab CI/CD [Электронный ресурс]. – Режим доступа: https://docs.gitlab.com/ee/ci/ (дата обращения: 21.10.2023)
- Документация Travis CI [Электронный ресурс]. – Режим доступа: https://www.travis-ci.com/ (дата обращения: 21.10.2023)
- Документация Circle CI [Электронный ресурс]. – Режим доступа: https://circleci.com/docs/ (дата обращения: 21.10.2023)
- Документация TeamCity [Электронный ресурс]. – Режим доступа: https://www.jetbrains.com/help/teamcity/teamcity-documentation.html (дата обращения: 21.10.2023)
- Инструменты непрерывной интеграции [Электронный ресурс]. – Режим доступа: https://www.atlassian.com/ru/continuous-delivery/continuous-integration/tools (дата обращения: 06.02.2024)
- Get started with CI/CD: Automating application delivery with CI/CD pipelines [Электронный ресурс]. – Режим доступа: https://www.infoworld.com/article/3269078/get-started-with-cicd-automating-application-delivery-with-cicd-pipelines.html (дата обращения: 06.02.2024)
- YandexCloud CI/CD в облаке [Электронный ресурс]. – Режим доступа: https://cloud.yandex.ru/ru/solutions/ci-cd (дата обращения: 03.02.2024)
Оставить комментарий