Классификация стадий разработки версий ПО (1С)

Исчерпывающее руководство по стадиям разработки, веткам и их соответствиям для конфигураций 1С

Введение

Данная классификация описывает полный цикл разработки версий программного обеспечения для конфигураций 1С, включая все стадии, соответствующие им ветки системы контроля версий и правила взаимодействия между ними.

Система основана на лучших практиках разработки ПО, адаптированных для специфики платформы 1С и учитывающих особенности работы с конфигурациями.

Основные (долгоживущие) ветки

Эти ветки являются основой всего процесса разработки и существуют на протяжении всего жизненного цикла проекта.

Ветка Назначение Критерий готовности / "Стабильности"
main (или master, releases) Историческая ветка стабильных релизов. Содержит только код, соответствующий версиям, которые работают у пользователей. Соответствует состоянию Публичного Релиза. Каждый коммит в main — это новая версия, которая поставляется пользователям.
develop (или dev, trunk) Ветка интеграции для следующего крупного релиза. Сюда сливается весь новый функционал для тестирования и стабилизации. Соответствует состоянию Стабильной Версии. Проходит все автоматические тесты и готова к созданию Релиз-Кандидата.

Вспомогательные (короткоживущие) функциональные ветки

Эти ветки создаются от develop и вливаются обратно в develop после завершения работы.

Тип ветки Создается от Вливается в Назначение и описание
feature/...
(например, feature/sso-auth)
develop develop Разработка нового функционала. Содержит одну логическую особенность или улучшение. Ветка существует до тех пор, пока функционал не будет полностью завершен и протестирован разработчиком.
bugfix/...
(например, bugfix/order-sum-calculation)
develop develop Исправление ошибки, найденной в ветке develop. Используется для срочных правок, не дожидаясь создания релиз-ветки.
experiment/... develop (часто никуда) Ветка для исследований и экспериментов. Код из нее может никогда не попасть в develop. Создается, чтобы не засорять основную ветку разработки.

Ветки и стадии подготовки релиза

Этот процесс начинается, когда ветка develop накопила достаточно функционала для нового релиза.

Стадия / Ветка Создается от Вливается в Назначение и описание
release/...
(например, release/v2.1.0)
develop develop и main Ветка стабилизации релиза. На этом этапе запрещено добавлять новый функционал. Допускаются только исправления критических багов, доработки документации и другие действия по подготовке к выпуску. Это и есть стадия "Релиз, требующий подготовки к упаковке".
Релиз-Кандидат (Release Candidate - RC) - - Сборка (билд), создаваемая из ветки release/.... Это версия, которая передается на интенсивное тестирование (например, UAT - User Acceptance Testing). Если в RC находят критические ошибки, их исправляют в ветке release/... и собирают новый RC (например, v2.1.0-rc1, v2.1.0-rc2).
Публичный Релиз (Public Release) - - Финальная стадия. Когда ветка release/... стабилизирована и последний RC успешно прошел все проверки, ее финальное состояние сливается в main и помечается тегом (например, v2.1.0). Эта же версия сливается обратно в develop, чтобы будущие функциональные ветки учитывали все исправления, сделанные во время стабилизации.

Ветки экстренного обслуживания (Hotfix)

Используются для оперативного исправления критических багов в Публичном Релизе (т.е. в main), когда нельзя ждать следующего запланированного релиза.

Тип ветки Создается от Вливается в Назначение и описание
hotfix/...
(например, hotfix/critical-db-issue)
main main и develop Экстренное исправление для продакшена. Содержит минимально необходимые изменения для устранения критической проблемы. После завершения исправления ветка сливается как в main (формируя новый патч-релиз, например, v2.1.1), так и в develop (чтобы исправление не было потеряно в следующих релизах).

Сводная таблица соответствия "Стадия → Ветка"

Ваше название стадии Уточненное название Соответствующая ветка Комментарий
Публичный релиз Публичный Релиз (Production Release) main (с тегом версии) Финальная версия у пользователей.
Релиз кандидат Релиз-Кандидат (Release Candidate) Сборка из ветки release/... Не отдельная ветка, а билд, помечаемый суффиксом -rcX.
Релиз, требующий подготовки Ветка стабилизации (Release Branch) release/... Именно в этой ветке идут мероприятия по подготовке к упаковке.
Стабильная версия Стабильная версия для разработки develop Версия, прошедшая все тесты и готовая к началу цикла выпуска релиза.
Фича Функциональная ветка (Feature Branch) feature/... Ветка для разработки и предварительного тестирования одной функции.

Визуализация workflow

gitGraph commit id: "Initial commit" branch develop checkout develop commit id: "Feature A" commit id: "Feature B" branch feature/login checkout feature/login commit id: "Login form" commit id: "Auth logic" checkout develop merge feature/login tag: "v1.0" branch release/v1.1 checkout release/v1.1 commit id: "Bug fixes" commit id: "Docs update" checkout main merge release/v1.1 tag: "v1.1.0" checkout develop merge release/v1.1 branch feature/payments checkout feature/payments commit id: "Payment form" commit id: "Processing" checkout develop merge feature/payments branch hotfix/security-issue checkout hotfix/security-issue commit id: "Security patch" checkout main merge hotfix/security-issue tag: "v1.1.1" checkout develop merge hotfix/security-issue

Эта классификация и workflow обеспечивают четкое разделение стадий, контролируемый процесс интеграции кода и минимизацию рисков при выпуске новых версий.

Заключение

Представленная классификация охватывает все основные стадии разработки программного обеспечения для конфигураций 1С и устанавливает четкие правила работы с ветками системы контроля версий.

Следование этой системе позволяет: