Рубрики
Uncategorized

Советы и хитрости для масштабируемого потока CI / CD

Когда вы планируете проект, вы не всегда знаете, насколько велико это будет к концу. Следовательно, это важно, чтобы следовать руководящим принципам, которые делают процесс разработки как можно более гладким. Одним из особенно полезных инструментов для этого является непрерывная интеграция / поток доставки или потоком CI / CD. Теги с новичками, DevOps, Docker.

Когда вы планируете проект, вы не всегда знаете, насколько велико это будет к концу. Следовательно, это важно, чтобы следовать руководящим принципам, которые делают процесс разработки как можно более гладким. Одним из особенно полезных инструментов для этого является непрерывная интеграция/поток доставки или потоком CI/CD.

В начале типичного процесса разработки до того, как проект готов к публикации, ваш поток CI выглядит что-то подобное:

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

В этой статье я продемонстрирую типичный поток CI/CD и предоставим советы, чтобы помочь вам масштабировать это для более крупных проектов. Обратите внимание, что эти рекомендации сделаны в предположении, что вы разработали настройку инфраструктуры, используя инструменты Docker и Orchestration, такие как Kubernetes.

Определите поток VCS

Все современные инструменты CI полагаются на системы управления версиями, поэтому для поддержания текущего потока CI на высоком уровне вы должны иметь правильную версию управления поток на месте. Я рекомендую Гит поток или Поток github Если вы ищете идеи. Выберите один и адаптируйте свой трубопровод в соответствии с вашими потребностями.

Рекомендации:

  • Запустите тесты на каждом толчке в любой ветке. Это помогает вашим разработчикам находить ошибки быстрее и ускорить процесс проверки кода.
  • Определите ветви, которые вы будете использовать, чтобы вызвать процессы сборки Docker Image и развернуть их, как показано на изображении выше.
  • Если ваши выпуски имеют сложный процесс одобрения вручную, используйте теги, чтобы вызвать выбросы производства.

Укажите свои условия

После того, как у вас есть поток Git, интегрируйте его с помощью логики создания и адаптировать его для количества у вас средних сред. Первоначально вы, вероятно, развернут все до производства после вашего местного тестирования окружающей среды. Позже вы можете решить сделать развитие, UAT и производство.

Пример:

Мы часто используем главный филиал для начала развертывания к среде разработки. Затем мы объединяем главную ветку в релиз ветви. Это вызывает развертывание UAT, где мы разрешаем небольшое количество пользователей для проверки новой версии. Если все работает правильно, и команда QA подтверждает выпуск, мы создаем тег из филиала выпуска, который инициирует развертывание к производству.

Настройте уведомления

Вы должны отслеживать все процессы потока CI через канал уведомления, который вы предпочитаете. Мы используем слабые для наших проектов.

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

Держите документ докера Простой

Лучше всего не проходить до докерских изображений Env переменных. Все переменные ENV должны быть переданы через команду Docker Run или на уровне инструмента оркестрации (например, Kubernetes). Это также поможет сохранить файлы конфигурации CI простым.

Унифицировать свой трубопровод

Компании сегодня все чаще используют архитектуру микросервисов; Единый трубопровод помогает вам извлечь выгоду из этого, масштабируя быстрее развертывания и настроив CI в новых микросервисах. В Drone CI или TRAVIS CI есть много переменных среды CI, вы можете использовать во время шагов трубопроводов (найду их на Prvis Ci Env Переменные и Drone Ci Env Переменные ). Вот несколько примеров переменных Ci Env в действии:

  • Чтобы пометить образец докера, вы можете использовать конкатенацию филиала сборки и номера сборки. В результате у вас будет что-то вроде «Мастер-6». В качестве альтернативы вы можете использовать вашу версию GIT Tag. Теги: "$ {drone_commit_branch} - $ {drone_build_number}"

  • Используйте имя репозитория для развертываний в ваших инструментах оркестрации. Пример развертывания Drone CI в кластер Kubernetes с переменными ENV.

deploy:
   image: peloton/drone-k8s-deployment
   deployment_names: "${DRONE_REPO_NAME}"
   container_names: "${DRONE_REPO_NAME}"
   namespaces: microservices
   docker_image: "62673275295.dkr.ecr.eu-west-1.amazonaws.com/${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-${DRONE_BUILD_NUMBER}"
   date_label: deployment.drone.io/date-deployed
   secrets: [kubernetes_url, kubernetes_token]

Определите имен имен изображений докера

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

Используйте шаблон строителя

Если вы можете компилировать и построить что-то на уровне CI, может быть полезно сделать это как дополнительный шаг, прежде чем поместить его в окончательное изображение. Посмотрите на Это видео Чтобы лучше понять.

Миграция БД как отдельный шаг

Не делайте свою миграцию как часть вашего докера; Вместо этого сделайте это на отдельном шаге. Дополнительные команды, такие как компиляция активов или миграций, должны работать как отдельные шаги, не выполняемые при запуске Docker. Вы также должны попытаться получить ваши окна докера и запустить в кратчайшие сроки.

Избегайте частных библиотек и подмодулей

Любые дополнительные зависимости, такие как частные модули или подмодулы NPM, могут вызвать проблемы для вас в процессе настройки вашей конфигурации CI. Например, если у вас есть подмодуль, и по умолчанию ваш CI имеет доступ только к вашим репозиториям через HTTP и авторизации токена, ваша конфигурация для локальной машины через Git не будет работать. Вам нужно будет переопределить ваш подмодуль, а не все инструменты CI предоставляют эту функцию.

Переопределить подмодуль Drone CI Пример

Вы столкнетесь с аналогичными проблемами, если вы используете частные модули NPM, поскольку вам понадобятся пассы или уже загруженные модули внутри докера.

Резюме

Когда вы настраиваете CI для нового проекта, проводите некоторое время на мышление и определение конвенций имени, потенциальных методов выращивания и объединения ваших шагов сборки. Это поможет вам быстрее развернуть новые услуги, использовать эти практики в качестве основы для новых проектов и бортовых сотрудников в процессе трубопровода быстрее.

Оригинал: «https://dev.to/alex_barashkov/tips-and-tricks-for-scalable-cicd-flow—49b7»