Skip to content

Добавить CI/CD через GitHub Actions: сборка приложения и деплой Docker‑образа в GHCR #9

Description

@loktionov129

Сейчас для сборки и локального запуска проекта требуется установка Docker, Docker Compose и множества дополнительных инструментов — это усложняет процесс для новых контрибьюторов и замедляет проверку изменений.

Цель: автоматизировать сборку проекта через GitHub Actions и развернуть Docker‑образ в GitHub Container Registry (GHCR). Это позволит:

  • упростить вклад в проект — не нужно настраивать полную локальную среду для проверки сборок;
  • обеспечить единообразие сборок в разных окружениях;
  • предоставить готовые Docker‑образы в GHCR для быстрого развёртывания.

Критерии приёмки

  • В репозитории добавлен workflow GitHub Actions в директории .github/workflows/.
  • Workflow успешно собирает проект Kuni с использованием CMake на виртуальной машине с ОС ubuntu‑latest.
  • Сборка включает все необходимые зависимости (CMake 3.18+, компилятор с поддержкой C++20 и корутин).
  • После успешной сборки создаётся Docker‑образ.
  • Docker‑образ публикуется в GitHub Container Registry (GHCR) с тегом, соответствующим версии коммита (например, sha или tag).
  • В README.md добавлен раздел с инструкцией по использованию готовых образов из GHCR.
  • Образы в GHCR имеют понятные теги (например, latest, main, v1.0.0).

Пошаговое описание реализации

Шаг 1. Создание workflow для сборки и деплоя

  1. Создать файл .github/workflows/build-and-deploy.yml.
  2. Настроить триггер: запуск при пуше в ветку main и при создании нового тега.
  3. В job сборки:
    • использовать runner ubuntu‑latest;
    • установить зависимости (CMake, компилятор C++20);
    • клонировать репозиторий и подмодули;
    • выполнить сборку проекта через CMake (cmake -B build -DCMAKE_BUILD_TYPE=Release и cmake --build build).

Шаг 2. Сборка Docker‑образа

  1. Добавить шаг в workflow для сборки Docker‑образа.
  2. Использовать Dockerfile из репозитория (убедиться, что он есть и корректен).
  3. Присвоить образу теги:
    • latest для пушей в main;
    • версия из тега (например, v1.2.3) для tagged‑релизов.

Шаг 3. Аутентификация и деплой в GHCR

  1. Настроить аутентификацию в GHCR через секрет GITHUB_TOKEN (предопределённый токен GitHub).
  2. Авторизоваться в registry: ghcr.io.
  3. Запустить docker push для отправки образа в GHCR.
  4. Убедиться, что образ доступен в разделе Packages репозитория.

Шаг 4. Обновление документации

  1. В README.md добавить раздел «Быстрый старт с Docker».
  2. Указать команды для:
    • входа в GHCR: docker login ghcr.io -u $GITHUB_ACTOR -p $GITHUB_TOKEN;
    • скачивания образа: docker pull ghcr.io/<ваш-username>/kuni:latest;
    • запуска контейнера.

Полезные ссылки

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions