Как использовать GitLab для одновременного выполнения заданий (Часть 1)

Давайте поговорим о GitLab.

Веб-платформа для DevOps GitLab предлагает полный набор инструментов для разработки программного обеспечения, контроля версий, непрерывной интеграции, доставки (CI/CD) и коммуникации. Основанная на Git, известной распределенной системе контроля версий, она предоставляет централизованное решение для управления репозиториями.

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

Основные функции GitLab

  1. Система контроля версий GitLab, использующая Git в качестве основы, позволяет разработчикам эффективно отслеживать изменения, создавать ветки и управлять слияниями.
  2. GitLab предлагает централизованную систему управления репозиториями, которая позволяет программистам эффективно хранить, организовывать и управлять своим кодовой базой.
  3. Отслеживание проблем: Используя встроенную систему отслеживания проблем GitLab, команды могут создавать и отслеживать проблемы, назначать их членам команды и отслеживать их прогресс.
  4. GitLab предоставляет мощную конвейер CI/CD, который автоматизирует процессы сборки, тестирования и развертывания. Он позволяет командам мгновенно объединять изменения в коде, выполнять автоматические тесты и развертывать приложения.
  5. Инструменты сотрудничества, такие как проверка кода, комментирование и встроенные разговоры, облегчают сотрудничество членов команды и предоставление вклада в изменения кода.
  6. GitLab предлагает инструменты управления проектами, такие как вехи, доски, Канбан и доски Agile, что позволяет командам успешно планировать и отслеживать прогресс своего проекта.
  7. Безопасность и контроль доступа: Для обеспечения целостности кода и защиты от потенциальных угроз безопасности, GitLab предлагает несколько возможностей безопасности, такие как ролевой контроль доступа, утверждения запросов на слияние и управление уязвимостями.

Рисунок 1 Архитектура конвейера GitLab CICD

GitLab доступен в различных выпусках, от бесплатной сообщественной версии до премиум-версии с большим функционалом и вариантами поддержки. Он может использоваться как облачная служба через GitLab.com или развертываться самостоятельно на собственных площадках.

GitLab Continuous Integration and Continuous Delivery (CI/CD)

GitLab CI/CD – это мощная платформа непрерывной интеграции и доставки, предлагаемая GitLab, веб-инструментом управления репозиториями Git. Команды могут автоматизировать каждый шаг жизненного цикла разработки программного обеспечения с помощью GitLab CI/CD, начиная от коммита кода до развертывания, используя набор конвейеров.

Ниже приведено общее представление процесса GitLab CI/CD:

  • Конфигурация GitLab: Прежде чем начать, необходимо настроить репозиторий GitLab и подготовить его. Вы можете либо настроить свой собственный самохозяйственный экземпляр GitLab, либо использовать облачную версию.
  • .gitlab-ci.yml: Основной механизм GitLab CI/CD заключен в файле .gitlab-ci.yml. Этот файл, описывающий конвейер CI/CD, находится в корне репозитория вашего проекта. Он состоит из нескольких шагов, задач и инструкций, которые определяют, как должен создаваться, проверяться и выпускаться ваш код. Язык, используемый для его написания, — YAML.
  • Pipelines: В GitLab CI/CD конвейер — это набор этапов и задач, которые указывают действия, которые необходимо выполнить для определенной ветки или тега в вашем репозитории. Вы можете автоматизировать процессы тестирования и развертывания, запуская каждый конвейер при появлении нового коммита или запроса на слияние.
  • Jobs and Stages: Этапы отражают шаги конвейера, включая сборку, тестирование и развертывание. Вы указываете одну или несколько задач — отдельные единицы работы — на каждом уровне. Задачи могут выполняться на разных runners (например, виртуальных машинах, контейнерах или Kubernetes-подах), либо параллельно, либо последовательно.
  • Runners: GitLab CI/CD использует runners для выполнения задач, указанных в вашем конвейере. GitLab предлагает как общие runners, так и настраиваемые runners, которые вы можете настроить на своей инфраструктуре. Ваши сборки и тесты всегда будут выполняться, так как GitLab Runners отслеживают новые задачи и запускают их в безопасных изолированных средах.
  • Job Artifacts and Reports: GitLab CI/CD позволяет сохранять артефакты, созданные в рамках конвейера, такие как результаты покрытия кода, отчеты о тестах или собранные бинарные файлы. Вы можете скачать эти артефакты и использовать их для развертывания или дополнительного исследования.
  • Интеграции и развертывание: GitLab CI/CD предоставляет множество интеграций для развертывания вашего кода в различные среды, включая кластеры Kubernetes, облачные инфраструктуры, такие как Azure, AWS или Google Cloud, или даже на собственные серверы. У нас есть возможность создания собственных скриптов развертывания или использования предопределенных шаблонов развертывания от GitLab.
  • Мониторинг и обратная связь: GitLab CI/CD предоставляет доступ к информации о статусе и развитии ваших конвейеров через интерфейс пользователя GitLab. Мы можем проверять логи, отслеживать, как работает каждое задание, и получать уведомления при успешном или неуспешном запуске конвейера.

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

В целом, GitLab CI/CD упрощает процесс создания, тестирования и развертывания программного обеспечения, позволяя командам создавать высококачественные приложения быстрее и эффективнее.

GitLab CI: Параллельная обработка

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

A great approach to decrease deployment times and give your development and quality assurance teams faster feedback is to run your automated deployments in parallel as part of our Gitlab CICD pipeline. Running your deployment in parallel cuts down on wait times and makes it possible to send bug fixes and upgrades to production more quickly without sacrificing the number of tests you run.


Рисунок 2 GitLab Параллельное выполнение заданий

Выполнение автоматизации параллельного развертывания с использованием GitLab CICD довольно просто, но есть несколько параметров настройки, о которых вам нужно знать. В этом уроке мы рассмотрим каждый шаг настройки параллельного выполнения для ускорения развертываний и способы информирования команды SRE о результатах. Итак, начнем!

Рисунок 3 GitLab – Параллельные развертывания с регионами

Функциональная схема параллельных развертываний в GitLab

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

В наших конвейерах, используемых для сборки и развертывания приложения GitLab, насчитывается более XX заданий. Не все эти позиции одинаковы. Некоторые из них – это быстрые операции, которые завершаются за несколько секунд, в то время как другие – это длительные процессы, которые должны быть тщательно оптимизированы. Каждый из этих конвейеров отражает изменения, внесенные членами команды и участниками из более широкого сообщества. Чтобы убедиться, что обновление работает должным образом и интегрировано с остальной частью продукта, все участники приложения/проекта должны дождаться завершения конвейеров. Чтобы поддерживать высокую производительность наших команд, мы хотим, чтобы конвейеры завершались как можно быстрее.

Поэтому мы постоянно следим за длиной наших конвейеров. Например, успешное завершение серии конвейеров в предыдущем релизе заняло около 53,8 минут.

Предполагая, что мы выполняем от 100 до 200 пайплайнов в среднем ежедневно, мы хотим исследовать возможности оптимизации нашего процесса для изменения того, как работают долговременные задачи.

Рисунок 4 GitLab – Последовательное выполнение задач

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

Source:
https://dzone.com/articles/how-to-use-gitlab-for-simultaneous-execution-of-jo