| name | release |
| description | Use when the user wants to cut a release — triggers like "/release", "сделай релиз", "выпусти релиз", "зарелизь". Computes the next SemVer from conventional commits on dev, confirms with the user, then merges dev→main, tags, and pushes so CI builds the image and GitHub Release. |
Release
Выпуск релиза бота. Вся детерминированная логика — в scripts/release.sh.
Твоя роль здесь — оркестрация двух фаз с человеческим согласованием посередине.
НЕ дублируй логику версионирования: считает её только скрипт.
Протокол (выполняй строго по шагам)
-
Фаза расчёта. Запусти:
./scripts/release.sh --dry-run
Скрипт сам проверит: чистое ли дерево, ветка ли dev, не отстал ли dev от
origin. Если он завершился с ошибкой — покажи её пользователю дословно и
остановись (не пытайся обойти проверки).
-
Согласование. Из вывода dry-run возьми Новая версия (vX.Y.Z),
HEAD dev (SHA) и список коммитов. Покажи пользователю предлагаемую версию и
что войдёт в релиз, и спроси подтверждения обычной репликой в чат:
«Предлагаю vX.Y.Z, войдут такие-то коммиты. Выпускаем?»
- Если пользователь хочет другую версию — используй её вместо посчитанной.
- Не продолжай без явного «да».
-
Фаза выполнения. После подтверждения запусти с подтверждённой версией и
тем SHA, что напечатал dry-run:
./scripts/release.sh --version vX.Y.Z --expect-sha <SHA_из_dry-run>
--expect-sha защищает от рассинхрона: если dev уехал между расчётом и
выполнением, скрипт откажется тегать. Тогда вернись к шагу 1 (пересчитай) и
согласуй заново.
-
Итог. Скрипт делает merge dev→main, ставит тег vX.Y.Z, пушит и
возвращается на dev. CI подхватывает тег и собирает образ + GitHub Release.
Сообщи пользователю, что релиз выпущен и CI собирает образ.
Важно
- Скрипт детерминированный: не передавай ему ничего, кроме
--dry-run или
--version (+ --expect-sha). Никаких ручных git merge/git tag в обход.
- Версия считается из conventional commits (
feat→minor, fix/прочее→patch,
!/BREAKING CHANGE:→major; в зоне 0.x breaking→minor). Тип коммитов — забота
разработки, здесь ты только следуешь тому, что посчитал скрипт.