Разработка сайта

Мы Makklays. Мы помогаем воплотить идею.

Что такое CI/CD в программировании?


Makklays - Статьи image

eye 46


Сейчас модно стало использовать CI/CD. Абревиатура CI/CD часто встречается в вакансиях. Давайте разберем, что это означает. Итак.
В разработке программного обеспечения, CI/CD или CICD — это комбинация непрерывной интеграции (CI) и непрерывной доставки или непрерывного развёртывания (CD).

CI/CD объединяет разработку, развёртывание и команду, ускоряя процесс сборки, тестирования и развёртывания приложения.

В настоящий момент DevOps-программисты стремятся применять CI/CD практически для всех задач.


CI/CD НА ПРАКТИКЕ



Как же это выглядит на практике. На практике при работе с PHP проектом, мы можем воспользоваться разными сервисами (ниже мы рассмотрим несколько из них). Казалось бы - непрерывная интеграция - это что-то очень умное и страшное. Это что-то что используют только большие компании NASA, Microsoft, Ford и Ferrari. Но нет. Даже небольшая компания из двух-трех программистов и дизайнера может позволить себе запустить CI/CD для сборки проектов.

Проще говоря, непрерывная интеграция — это выкладка кода в продакшен систему :) Действия которые выполняются в небольших командах, и особенно в стартапах многократно за день. Непрерывная интеграция автоматизирует этот процесс и сокращает время программиста на это действие.

Для этого они могут воспользоваться несколькими рассмотренными ниже сервисами.


Gitlab CI



Воспользуйтесь замечательным инструментом Gitlab CI/CD для автоматизации непрерывной интеграции. После покупки Github-a Microsoft и после больших вложений в Github, на Github-е начали появляться новые фишки для неискушенных: Github Actions, проверка кода и, после многолетнего ожидания, впервые появились бесплатные приватные репозитории. Выбрав Github CI/CD весь процесс сборки и выкладки кода на продуктивный сервер будет состоять из трех шагов: build, tests, deploy на прод. В корне проекта нужно сделать файла .gitlab-ci.yml - конфиг файл, который описывае что нужно запускать и как нужно запускать. Весь синтаксис и правила написания этого файла доступны в справочнике https://docs.gitlab.com/ee/ci/yaml/ - там все подробно рассказано. Примеры кода и разворачивая всего этого на своем проекте есть в интернете и не будем на этот зацикливаться. Обращу внимание, что для стадии Deploy проект будет заливаться на внешнее облако Heroku. Настройка и рассмотрение Heroku выходить за рамки статьи. Все что вам нужно это название вашего приложения и API ключ Heroku.


Jenkins



Система Jenkins очень известна и широко применима с 2011 года, как ответвление проекта Hudson от Oracle. Это яркий пример СI/CD системы, для чего собственно Jenkins и разработан. Сегодня с системой Jenkins работают в PlayStation и NASA SpaceХ. Продукт бесплатный и распостраняется по лицензии MIT. Для своей работы Jenkins требует выделенный сервер. У Jenkins есть много сообществ и статей о том, как его настроить и использовать в интернете. Также есть много книг и гайдов (в интернете). Настройка и рассмотрение Jenkins выходить за рамки статьи. Jenkins имеет несколько полезных приложений: Configuration as Code — помагает в настройке Jenkins, и система Jenkins Х для облака. Jenkins Х реактивно доставляет данные на облако.


TeamCity



Часто выбирают систему TeamCity так как, система TeamCity наиболее простая в установке и настройке. После скачивания и инсталяции системы непрерывной интеграции вам становится доступен CI сервер по http url, для разворачивания системы непрерывной интергации. Для удобства можно создать proxy-server на 80 порту. Настройка CI сервера непрерывной интеграции очень проста (часто именно поэтому программисты и выбирают TeamCity). Сделать настройку CI сервера можно через веб админ панель. Все что от вас требуется это заполнять поля и нажимать кнопку продолжить, почти как в Windows. Все просто и понятно. А в интернете есть много статей со скриншотами, не будем останавливать на нем детальное рассмотрение.


И другие CI/CD для PHP проектов



PHP Censor, Rex (Remote Execution), Open Build Service (OBS), Rundeck, GoCD, Buildbot - все они тоже используются при разработке проектов на PHP для непрерывной интеграции.