Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ML Services
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка Telegram-бота с поддержкой AI-агента
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Построение пайплайна CI/CD в GitLab
    • Запуск GitLab Runner в Serverless Containers
    • Настройка CI/CD между Cloud Functions и SourceCraft
    • Настройка CI/CD между Cloud Functions и GitHub
    • Настройка CI/CD в SourceCraft для развертывания приложения в Serverless Containers с помощью GitHub Actions
    • Работа с API-шлюзом по протоколу WebSocket
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Автоматическое копирование объектов из одного бакета Object Storage в другой
    • Визуализация логов в Grafana с помощью плагина Cloud Logging
    • Канареечный релиз функции Cloud Functions
    • Интерактивная отладка функций Cloud Functions
    • Создание функции Node.js с помощью TypeScript
    • Запуск контейнерного приложения в Serverless Containers
    • Передача событий Yandex Cloud Postbox в Data Streams и их анализ с помощью DataLens
    • Использование API Gateway для настройки синтеза речи в SpeechKit
    • Подключение к YDB из функции Cloud Functions на Python
    • Подключение к базе данных YDB из функции Cloud Functions на Node.js
    • Защита API Gateway при помощи Smart Web Security
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Автоматическая загрузка данных в Yandex SpeechSense с помощью Yandex Workflows
    • Настройка реагирования в Cloud Logging и Yandex Cloud Functions
    • Настройка интеграций Workflows с Tracker, YandexGPT и Yandex Cloud Postbox
    • Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers
    • Создание адреса Yandex Cloud Postbox и проверка владения доменом с помощью Terraform
    • Создание AI-агента с помощью Yandex Cloud Functions
    • Настройка Postfix для отправки через Yandex Cloud Postbox
    • Интеграция Yandex Cloud Postbox с внешними системами через вебхуки

В этой статье:

  • Создайте сервисный аккаунт
  • Создайте реестр
  • Создайте репозиторий
  • Создайте сервисное подключение
  • Настройте CI/CD
  • Проверьте выполнение CI/CD
  • Проверьте, что контейнер создан
  • Удалите созданные ресурсы
  • См. также
  1. Бессерверные технологии
  2. Настройка CI/CD в SourceCraft для развертывания приложения в Serverless Containers с помощью GitHub Actions

Настройка CI/CD в SourceCraft для развертывания приложения в Yandex Serverless Containers с помощью GitHub Actions

Статья создана
Yandex Cloud
Обновлена 24 октября 2025 г.
  • Создайте сервисный аккаунт
  • Создайте реестр
  • Создайте репозиторий
  • Создайте сервисное подключение
  • Настройте CI/CD
  • Проверьте выполнение CI/CD
  • Проверьте, что контейнер создан
  • Удалите созданные ресурсы
  • См. также

В этом практическом руководстве вы настроите CI/CD-процесс для развертывания контейнеризированного приложения в Serverless Containers из репозитория SourceCraft с помощью GitHub Actions. Интеграция между SourceCraft и Yandex Cloud будет выполнена с помощью сервисного подключения.

Важно

Для создания сервисного подключения у вас должна быть роль Владелец организации (organization-manager.organizations.owner).

Чтобы настроить CI/CD для развертывания приложения в Serverless Containers из репозитория SourceCraft с помощью GitHub Actions:

  1. Создайте сервисный аккаунт.
  2. Создайте реестр.
  3. Создайте репозиторий.
  4. Создайте сервисное подключение.
  5. Настройте CI/CD.
  6. Проверьте выполнение CI/CD.
  7. Проверьте, что контейнер создан.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входит:

  • Плата за хранение созданных Docker-образов (см. тарифы Container Registry.
  • Плата за количество вызовов контейнера, вычислительные ресурсы, выделенные для выполнения приложения, и исходящий трафик (см. тарифы Serverless Containers.

Создайте сервисный аккаунтСоздайте сервисный аккаунт

От имени сервисного аккаунта будут загружаться Docker-образы в реестры Yandex Container Registry и развертываться контейнеры в Serverless Containers.

Консоль управления
CLI
API
  1. Войдите в консоль управления Yandex Cloud.

  2. В левой части экрана нажмите на строку с именем каталога, в котором вы хотите развернуть контейнер.

  3. В списке сервисов выберите Identity and Access Management.

  4. Нажмите Создать сервисный аккаунт.

  5. В поле Имя укажите github-action.

  6. Нажмите Добавить роль и выберите роли:

    • container-registry.images.pusher — для работы с Docker-образами в реестре;
    • serverless-containers.editor — для управления контейнером;
    • iam.serviceAccounts.user — для возможности при создании ревизии контейнера указать сервисный аккаунт, от имени которого Docker-образ будет загружен из реестра.
  7. Нажмите Создать.

  1. Создайте сервисный аккаунт:

    yc iam service-account create \
      --name github-action
      --folder-name <имя_каталога>
    

    Результат:

    id: ajeab0cnib1p********
    folder_id: b0g12ga82bcv********
    created_at: "2025-10-03T09:44:35.989446Z"
    name: github-action
    
  2. Назначьте сервисному аккаунту роли на каталог:

    • iam.serviceAccounts.user — для возможности при создании ревизии контейнера указать сервисный аккаунт, от имени которого Docker-образ будет загружен из реестра:

      yc resource-manager folder add-access-binding <имя_каталога> \
        --service-account-name github-action \
        --role iam.serviceAccounts.user \
        --folder-name <имя_каталога>
      
    • serverless-containers.editor — для управления контейнером:

      yc resource-manager folder add-access-binding <имя_каталога> \
        --service-account-name github-action \
        --role serverless-containers.editor \
        --folder-name <имя_каталога>
      
    • container-registry.images.pusher — для работы с Docker-образами в реестре:

      yc resource-manager folder add-access-binding <имя_каталога> \
        --service-account-name github-action \
        --role container-registry.images.pusher \
        --folder-name <имя_каталога>
      
  1. Создайте сервисный аккаунт github-action. Для этого воспользуйтесь методом REST API create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create.

  2. Назначьте сервисному аккаунту в текущем каталоге роли:

    • iam.serviceAccounts.user — для возможности при создании ревизии контейнера указать сервисный аккаунт, от имени которого Docker-образ будет загружен из реестра;
    • serverless-containers.editor — для управления контейнером;
    • container-registry.images.pusher — для работы с Docker-образами в реестре.

    Для этого воспользуйтесь методом REST API setAccessBindings для ресурса Folder или вызовом gRPC API FolderService/SetAccessBindings.

Создайте реестрСоздайте реестр

В реестре Container Registry будет храниться Docker-образ приложения.

Консоль управления
CLI
API
  1. В консоли управления выберите Container Registry.
  2. Нажмите Создать реестр.
  3. Задайте имя реестра github-action.
  4. Нажмите Создать реестр.
  5. Сохраните идентификатор созданного реестра, он понадобится в дальнейшем.

Создайте реестр github-action:

yc container registry create --name github-action

Результат:

id: crpd50616s9a********
folder_id: b1g88tflru0e********
name: github-action
status: ACTIVE
created_at: "2025-10-03T10:34:06.601Z"

Сохраните идентификатор созданного реестра, он понадобится в дальнейшем.

Воспользуйтесь методом REST API create для ресурса Registry или вызовом gRPC API RegistryService/CreateRegistryRequest.

Сохраните идентификатор созданного реестра, он понадобится в дальнейшем.

Создайте репозиторийСоздайте репозиторий

Репозиторий будет создан из шаблона yc-ci-cd-serverless. В репозитории будут храниться Dockerfile и вспомогательные файлы для создания Docker-образа, а также настройки CI/CD-процесса.

Интерфейс SourceCraft
  1. Откройте главную страницу сервиса.

  2. На панели слева нажмите Создать репозиторий.

  3. В открывшемся окне выберите Пустой репозиторий.

  4. В блоке Сведения о новом репозитории:

    • В поле Владелец выберите организацию, в которой вы создали сервисный аккаунт в Yandex Cloud.

    • В поле Название укажите название репозитория.

      Название должно быть уникальным в пределах организации и может содержать следующие ASCII-символы: строчные и заглавные буквы латинского алфавита, цифры, запятые, дефисы и подчеркивания.

      Под названием отображается адрес, по которому репозиторий будет доступен.

    • (опционально) В поле Описание укажите описание репозитория.

  5. В блоке Шаблон репозитория нажмите Просмотр шаблонов, выберите шаблон yc-ci-cd-serverless и нажмите Использовать шаблон.

    Чтобы посмотреть содержимое шаблона, нажмите Предварительный просмотр.

    В шаблоне содержатся:

    • файл .sourcecraft/ci.yaml с предустановленной конфигурацией CI/CD-процесса, который запускается при создании коммита и выполняет следующее:
      • Получает IAM-токен Yandex Cloud с помощью сервисного подключения с именем default-service-connection.
      • Устанавливает в окружение воркера утилиту Docker Buildx с помощью GitHub Action Docker Setup Buildx.
      • Аутентифицируется в Container Registry с помощью GitHub Action Docker Login и IAM-токена Yandex Cloud.
      • Собирает Docker-образ из Dockerfile, размещенного в корне репозитория, и отправляет образ в Container Registry с помощью GitHub Action Build and push Docker images.
      • Разворачивает контейнер в Serverless Containers из собранного Docker-образа.
    • файлы Dockerfile, index.html и docker/nginx/conf.d/default.conf с конфигурацией контейнера со статическим веб‑приложением на базе Nginx.
  6. Нажмите Создать репозиторий.

Создайте сервисное подключениеСоздайте сервисное подключение

Интерфейс SourceCraft
  1. Откройте главную страницу SourceCraft.

  2. Перейдите на вкладку Организации.

  3. Выберите организацию, в которой вы создали сервисный аккаунт в Yandex Cloud.

  4. На странице организации в разделе Настройки перейдите в секцию Сервисные подключения.

  5. Нажмите Новое сервисное подключение.

  6. В блоке Базовая информация укажите имя сервисного подключения default-service-connection.

  7. В блоке Область применения выберите созданный ранее репозиторий.

  8. В блоке Настройки Yandex Cloud выберите:

    • Каталог, в котором ранее вы развернули облачную инфраструктуру и назначили роль сервисному аккаунту.

    • Сервисный аккаунт github-action.

      Совет

      Чтобы повторно запросить список облаков, каталогов и сервисных аккаунтов из Yandex Cloud, нажмите Синхронизировать. Это может быть полезно, если параллельно с созданием сервисного подключения вы создали каталог или сервисный аккаунт.

  9. Нажмите Создать сервисное подключение.

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

    В Yandex Cloud будет автоматически создана федерация сервисных аккаунтов Yandex Identity and Access Management.

    Чтобы посмотреть параметры созданного OIDC-провайдера, в блоке Федерация cервисных аккаунтов нажмите на имя федерации.

Настройте CI/CDНастройте CI/CD

Интерфейс SourceCraft
  1. Откройте главную страницу SourceCraft.

  2. На вкладке Домой в секции Ваша мастерская перейдите в раздел Репозитории.

  3. Выберите созданный ранее репозиторий.

  4. Выберите файл .sourcecraft/ci.yaml.

  5. В правом верхнем углу нажмите Редактировать.

  6. В параметре YC_DOCKER_REGISTRY_URI укажите идентификатор созданного ранее реестра:

    YC_DOCKER_REGISTRY_URI: cr.yandex/<идентификатор_реестра>
    
  7. В правом верхнем углу нажмите Сохранить изменения.

  8. Сделайте коммит:

    1. Введите сообщение об изменениях.
    2. В блоке Ветка изменений выберите Сохранить непосредственно в ветку: main.
    3. В блоке Действие после сохранения изменений выберите Просто сохранить.
    4. Нажмите Сохранить изменения.

После сохранения изменений запустится рабочий процесс demo-service-connection-workflow.

Проверьте выполнение CI/CDПроверьте выполнение CI/CD

Интерфейс SourceCraft
  1. Откройте главную страницу SourceCraft.
  2. На вкладке Домой в секции Ваша мастерская перейдите в раздел Репозитории.
  3. Выберите созданный ранее репозиторий.
  4. На странице репозитория в разделе Код перейдите в секцию Автоматизации.
  5. В списке запусков автоматизаций вы увидите новый запуск. Дождитесь, когда статус изменится на Успех.

Проверьте, что контейнер созданПроверьте, что контейнер создан

Консоль управления
CLI
API
  1. В консоли управления выберите сервис Serverless Containers.

  2. В списке должен появиться контейнер demo-serverless-container1, выберите его.

    В блоке Ревизии должна появиться ревизия контейнера, по времени создания соответствующая времени запуска CI/CD-процесса.

Выполните команду:

yc serverless container revision list \
  --container-name demo-serverless-container1

Где --container-name — имя контейнера, указанное в .sourcecraft/ci.yaml.

Результат:

+----------------------+----------------------+--------------------------------------------------------+---------------------+
|          ID          |     CONTAINER ID     |                 IMAGE                                  |     CREATED AT      |
+----------------------+----------------------+--------------------------------------------------------+---------------------+
| bba27hejd69a******** | bba83i1mrb5s******** | cr.yandex/yc/serverless/demo-serverless-container1     | 2025-10-04 09:38:14 |
+----------------------+----------------------+--------------------------------------------------------+---------------------+

Воспользуйтесь методом REST API listRevisions для ресурса Container или вызовом gRPC API RegistryService/CreateRegistryRequest.

Удалите созданные ресурсыУдалите созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите контейнер.
  2. Удалите Docker-образ.
  3. Удалите реестр.

См. такжеСм. также

  • Настроить CI/CD между SourceCraft и Yandex Cloud Functions
  • Настроить в SourceCraft сервисное подключение к Yandex Cloud
  • Интеграция с GitHub Actions в SourceCraft
  • Репозиторий serverless-functions в SourceCraft
  • Репозиторий yc-ci-cd-serverless в SourceCraft

Была ли статья полезна?

Предыдущая
Настройка CI/CD между Cloud Functions и GitHub
Следующая
Работа с API-шлюзом по протоколу WebSocket
Проект Яндекса
© 2025 ООО «Яндекс.Облако»