Как мы подходим к хранению исходного кода
Хранение исходного кода — это не просто вопрос git-репозитория. Это вопрос управляемости, зрелости процессов и устойчивости вашей разработки. Мы рассматриваем хранение исходного кода как часть архитектуры управления цифровыми активами и как фундаментальную опору для устойчивых DevOps-процессов. Подробнее об этом в глоссарии терминов.
В этой статье мы расскажем, как в Etence выстраивается подход к хранению кода, чтобы обеспечить прозрачность, надёжность и гибкость решений — без необходимости предоставлять заказчику прямой доступ к Git.
Внутренняя архитектура репозитория основана на best practices Git и принципах архитектуры DevOps.
Ветки и окружения
Основная ветка (main или master
) — отражает стабильную, протестированную версию продукта.
Разработка (develop или dev
) — активная зона интеграции новых функций.
Функциональные ветки (feature/*
) — используются для изолированной разработки.
Релизные (release/*
) и хотфиксы (hotfix/*
) — привязаны к конкретным версиям и инцидентам.
Такая структура помогает отслеживать изменения, формировать тестовые окружения и поддерживать предсказуемость.
Релизы и версии
Каждый стабильный релиз помечается тегом, например: v1.0.0
, v1.1.3
, v2.0.0-beta
.
К релизу обязательно прилагается:
Changelog — перечень изменений;
описание состава — что вошло, что изменено, что удалено;
commit ID
— идентификатор контрольной точки.
Версионирование позволяет однозначно зафиксировать результат и обеспечивает юридическую чёткость при передаче.
README
— описание проекта, установки, ключевых концепций.
CONTRIBUTING.md
— рекомендации и правила для разработчиков.
CHANGELOG.md
— история версий.
LICENSE / NOTICE
— условия использования и права.
Документация встроена в структуру хранения и обновляется в рамках процесса, а не задним числом.
Права доступа реализуются через CI/CD-политику, SSH-ключи и журналирование — всё это часть защищённой DevOps-инфраструктуры.
Роли разграничены: разработка, ревью, запуск CI/CD, аудит и поддержка.
Ветки защищены: изменения возможны только через Merge Request и код-ревью.
Все доступы реализуются через SSH-ключи
по ролям, с обязательным журналированием действий.
Ключи API, токены
и другие чувствительные данные никогда не хранятся в коде — они вынесены в защищённые хранилища, такие как Vault.
Архитектура доступа обеспечивает как прозрачность действий, так и отказоустойчивость в случае сбоев или замены участников.
Мы передаём не только архив, но и формализованные материалы — для юридической фиксации и соответствия требованиям аудита.
commit ID
).В этой схеме мы показываем, как в рамках разработки и сопровождения проекта может быть организован жизненный цикл исходного кода: от его публикации до передачи и развёртывания в инфраструктуре заказчика.
Фокус сделан на управляемости, прозрачности и разделении контуров ответственности — между разработчиком, техническим исполнителем и заказчиком.
Эта модель иллюстрирует архитектуру хранения и передачи исходного кода, построенную на принципах контроля версий, DevOps и юридической прозрачности.
Схема архитектуры хранения, сборки и передачи исходного кода
Что делает эту схему полезной для бизнеса?
Такое представление особенно важно при формализации передачи прав, аудите или переходе к устойчивой модели DevOps-инфраструктуры.
Схема разделена на три уровня, соответствующих ключевым стадиям:
Производственная среда Исполнителя
На этом уровне размещён Git-сервер (например, GitLab, GitHub или другой), который используется как централизованное хранилище кода и история изменений. Отсюда запускаются автоматические пайплайны (CI/CD), реализующие сборку, тестирование и проверку безопасности. Все чувствительные параметры (секреты, ключи, конфигурации) хранятся отдельно — это повышает безопасность и воспроизводимость сборки.
Поставка Заказчику (Delivery)
Параллельно со сборкой формируется пакет для передачи, который содержит commit ID, changelog, документацию и, при необходимости, формализованные отчёты. Такой подход позволяет отделить юридическую сторону владения результатом от инфраструктурной реализации. Пакет может быть актирован и использоваться для контроля исполнения договорных обязательств.
Эксплуатация (Prod)
После приёмки артефакты из хранилища передаются в инфраструктуру заказчика — чаще всего это продовый кластер Kubernetes. Развёртывание может быть выполнено как автоматически (по принципу GitOps или через CI/CD), так и вручную, с использованием предоставленных инструкций. В этой зоне ответственность переходит на сторону заказчика — важно, чтобы все полученные компоненты были воспроизводимы и документированы.
Правильно организованная архитектура управления исходным кодом особенно важна в ситуациях, которые обостряют потребность в структурированном и контролируемом хранении кода:
Смена подрядчика
Легко передать контроль, не теряя историю и структуру.
Рост команды
У новых участников есть документация и история.
Аудит / сертификация
Легко доказать управляемость и безопасность.
Инцидент или баг
Быстрый откат или анализ по истории изменений.
Надёжность — риск потери кода или контроля минимален.
Прозрачность — можно получить чёткий ответ: где что лежит, кто что делал.
Адаптивность — подход легко масштабируется под рост команды или переход на другую инфраструктуру.
Контролируемость — вы знаете, что ваш код хранится по правилам, даже если вы не видите Git напрямую.
Устойчивость — процессы не завязаны на конкретных людей или подрядчиков.
Юридическая определённость — вы получаете формализованную передачу кода, соответствующую правовым требованиям.
Если вы хотите выстроить надёжную инфраструктуру хранения кода — мы поможем оценить текущую систему, предложим улучшения и обеспечим внедрение на базе GitLab, GitHub или других решений. Наша команда уже внедряла подобные процессы в проектах.
Напишите нам, чтобы обсудить ваш контекст и подобрать адаптивный подход.
17.05.2025