tocdepth

2

Lab 4: Настройка пайплайна CI/CD в GitHub, GitLab и GitVerse с использованием Artifact Registry

В этой лабораторной работе вы научитесь создавать процесс автоматической сборки и публикации Docker-образа из системы контроля версий GitHub, GitLab или GitVerse в Artifact Registry. А также настроите автоматическое развертывание ревизии контейнера в Container Apps.

1. Подготовьте среду

Подготовьте среду, если не сделали этого ранее.

2. Создайте реестр в Artifact Registry и получите ключи доступа

В первой лабораторной работе для загрузки образа вы создавали реестр в сервисе Artifact Registry, а также получали ключи доступа. Вы можете использовать текущий реестр и ключи доступа или создать новые. Если хотите создать новые, пройдите шаги 3-5 из первой лабораторной работы.

Сохраните URI реестра и персональные ключи доступа — они понадобятся для выполнения лабораторной работы.

3. Настройте пайплайн CI/CD в системе контроля версий

Вы можете создавать пайплайны непрерывной интеграции и непрерывного развертывания (CI/CD) с помощью GitHub Actions.

  1. Создайте аккаунт в GitHub.

  2. Cделайте форк репозитория Cloud.ru с примером REST API на языках Go, Python, C#, JavaScript.

    Репозиторий содержит готовый код и Dockerfile для сборки Docker-образов приложений. Образы подходят для запуска на платформе linux/amd64.

  3. Перейдите в раздел Actions.

  4. Нажмите кнопку New workflow и перейдите по ссылке Set up workflow youself.

    Будет создан шаблон файла конфигурации в формате .yml в папке .gitub/workflows.

  5. Скопируйте код из репозитория Cloud.ru и добавьте его в созданный YAML-файл.

    Этот сценарий запускает создание Docker-образа и его загрузку в Artifact Registry.

  6. В YAML‑файле в блоке env укажите URI реестра Artifact Registry в качестве значения ключа CR_URI. Например, helloworld.cr.cloud.ru.

  7. Перейдите в раздел Settings → Secrets and variables → Actions → Variables.

  8. Укажите переменные и их значения, которые будут использоваться в команде docker login для аутентификации в Artifact Registry.

    В нашем примере YAML‑файла это следующие переменные:

    • EVO_CR_LOGIN — логин персонального ключа доступа;

    • EVO_CR_PWD — пароль персонального ключа доступа.

  9. После завершения редактирования YAML-файла зафиксируйте и отправьте изменения в свой репозиторий GitHub.

    Коммит запустит пайплайн, каждый шаг которого будет выполняться в порядке, указанном в YAML‑файле.

  10. Убедитесь, что все этапы выполнения сценария сборки завершились успешно.

    В Artifact Registry вы должны увидеть загруженный образ.

    При каждом изменении кода в GitHub обновленный образ будет автоматически отправляться в реестр Artifact Registry.

  11. В личном кабинете перейдите в раздел Artifact Registry и убедитесь, что образ появился в реестре.

4. Настройте автоматическое развертывание контейнера

Чтобы каждый раз после загрузки в реестр обновленного Docker-образа автоматически создавалась новая ревизия контейнера:

  1. В Artifact Registry откройте меню загруженного образа и нажмите Создать Container App.

  2. Заполните поля и активируйте опции:

    • Название контейнера — глобально уникальное имя, на базе которого формируется адрес вашего приложения в домене *.containers.cloud.ru.

    • Порт контейнера — порт контейнера, который должен совпадать с портом вашего приложения. В этой лабораторной работе используем порт 8080.

    • vCPU/RAM — количество vCPU и RAM, которые выделяются для каждого экземпляра контейнера при обработке вызова. Выберите минимальную конфигурацию.

    • Минимальное и максимальное количество экземпляров при масштабировании сервиса. По умолчанию происходит масштабирование с 0, что может вызывать небольшую задержку при старте вашего приложения. Установите минимальное количество экземпляров в значение 0, а максимальное — 1.

    • Публичный адрес — активируйте опцию, чтобы получить URL-адрес для вызова приложения из интернета.

    • Автоматическое развертывание — активируйте опцию, чтобы каждый раз после загрузки в Artifact Registry новой версии образа на стороне Container Apps автоматически создавалась новая ревизия контейнера.

  3. Нажмите Создать.

Откроется страница сервиса Container Apps. Контейнер будет запущен в течение нескольких секунд.

Дождитесь, когда контейнер и ревизия перейдут в статус «Выполняется».

Теперь при каждом изменении кода в системе CI/CD обновленный образ будет автоматически отправляться в реестр Artifact Registry, а на стороне Container Apps будет автоматически создаваться новая ревизия контейнера.

Что дальше

Вы научились создавать процесс автоматической сборки и публикации Docker-образа с помощью GitHub, GitLab, GitVerse и Artifact Registry, а также настроили автоматическое развертывание ревизии контейнера из обновленного образа.

В пятой лабораторной работе вы развернете в контейнере Telegram-бота на Python.

Запустили Evolution free tier
для Dev & Test
Получить