Настройка пайплайна 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.
Создайте аккаунт в GitHub.
Cделайте форк репозитория Cloud.ru с примером REST API на языках Go, Python, C#, JavaScript.
Репозиторий содержит готовый код и Dockerfile для сборки Docker-образов приложений. Образы подходят для запуска на платформе linux/amd64.
Перейдите в раздел Actions.
Нажмите кнопку New workflow и перейдите по ссылке Set up workflow youself.
Будет создан шаблон файла конфигурации в формате .yml в папке .gitub/workflows.
Скопируйте код из репозитория Cloud.ru и добавьте его в созданный YAML-файл.
Этот сценарий запускает создание Docker-образа и его загрузку в Artifact Registry.
В YAML‑файле в блоке env укажите URI реестра Artifact Registry в качестве значения ключа CR_URI. Например, helloworld.cr.cloud.ru.
Перейдите в раздел Settings → Secrets and variables → Actions → Variables.
Укажите переменные и их значения, которые будут использоваться в команде docker login для аутентификации в Artifact Registry.
В нашем примере YAML‑файла это следующие переменные:
EVO_CR_LOGIN — логин персонального ключа доступа;
EVO_CR_PWD — пароль персонального ключа доступа.
После завершения редактирования YAML-файла зафиксируйте и отправьте изменения в свой репозиторий GitHub.
Коммит запустит пайплайн, каждый шаг которого будет выполняться в порядке, указанном в YAML‑файле.
Убедитесь, что все этапы выполнения сценария сборки завершились успешно.
В Artifact Registry вы должны увидеть загруженный образ.
При каждом изменении кода в GitHub обновленный образ будет автоматически отправляться в реестр Artifact Registry.
В личном кабинете перейдите в раздел Artifact Registry и убедитесь, что образ появился в реестре.
4. Настройте автоматическое развертывание контейнера
Чтобы каждый раз после загрузки в реестр обновленного Docker-образа автоматически создавалась новая ревизия контейнера:
В Artifact Registry откройте меню загруженного образа и нажмите Создать Container App.
Заполните поля и активируйте опции:
Название контейнера — глобально уникальное имя, на базе которого формируется адрес вашего приложения в домене *.containers.cloud.ru.
Порт контейнера — порт контейнера, который должен совпадать с портом вашего приложения. В этой лабораторной работе используем порт 8080.
vCPU/RAM — количество vCPU и RAM, которые выделяются для каждого экземпляра контейнера при обработке вызова. Выберите минимальную конфигурацию.
Минимальное и максимальное количество экземпляров при масштабировании сервиса. По умолчанию происходит масштабирование с 0, что может вызывать небольшую задержку при старте вашего приложения. Установите минимальное количество экземпляров в значение 0, а максимальное — 1.
Публичный адрес — активируйте опцию, чтобы получить URL-адрес для вызова приложения из интернета.
Автоматическое развертывание — активируйте опцию, чтобы каждый раз после загрузки в Artifact Registry новой версии образа на стороне Container Apps автоматически создавалась новая ревизия контейнера.
Нажмите Создать.
Откроется страница сервиса Container Apps. Контейнер будет запущен в течение нескольких секунд.
Дождитесь, когда контейнер и ревизия перейдут в статус «Выполняется».
Теперь при каждом изменении кода в системе CI/CD обновленный образ будет автоматически отправляться в реестр Artifact Registry, а на стороне Container Apps будет автоматически создаваться новая ревизия контейнера.
Что дальше
Вы научились создавать процесс автоматической сборки и публикации Docker-образа с помощью GitHub, GitLab, GitVerse и Artifact Registry, а также настроили автоматическое развертывание ревизии контейнера из обновленного образа.
В пятой лабораторной работе вы развернете в контейнере Telegram-бота на Python.
- 1. Подготовьте среду
- 2. Создайте реестр в Artifact Registry и получите ключи доступа
- 3. Настройте пайплайн CI/CD в системе контроля версий
- 4. Настройте автоматическое развертывание контейнера
- Что дальше