Як теги використовуються для релізів?
Теги використовуються для релізів як фіксована точка в історії Git, яка однозначно визначає версію продукту і слугує тригером для релізу і CI/CD.
Простіше кажучи: реліз = конкретний коміт + тег версії.
Основна ідея
- код вважається готовим
- на потрібний коміт ставиться тег версії
- усе, що стосується релізу, прив'язується до цього тегу
Тег стає «якорем» релізу.
Типовий процес релізу з тегами
- Код в основній гілці готовий (
main,release/*) - Створюється annotated tag:
bash
git tag -a v1.3.0 -m "Release 1.3.0"- Тег пушиться у віддалений репозиторій:
bash
git push origin v1.3.0- CI/CD реагує на тег:
- збирає проект
- запускає тести
- деплоїть у потрібне середовище
- На GitHub / GitLab створюється реліз:
- опис змін
- прикріплені артефакти
Чому для релізів використовують саме теги
Фіксована версія
- тег не рухається
- версія
v1.3.0завжди = той самий код
Відтворюваність
- можна перезібрати реліз через роки
- легко знайти код конкретної версії
Інтеграція з CI/CD
-
пайплайни часто налаштовані так:
«деплой у прод - тільки за тегом»
Зрозуміла історія релізів
- список тегів = історія версій
- зручно орієнтуватися в розвитку продукту
Lightweight чи annotated?
Для релізів майже завжди:
annotated tag
Тому що:
- є опис
- є автор і дата
- можна підписати тег
- зручно для аудиту
Часте питання на співбесіді
Чому не робити реліз із гілки?
Тому що:
- гілка змінюється
- сьогодні
main- одне, завтра - інше - неможливо гарантувати точну версію
Тег вирішує цю проблему.
Коротка відповідь для співбесіди
Теги використовуються для релізів як незмінні мітки версії: на потрібний коміт ставиться тег, за яким запускається CI/CD, створюється реліз і фіксується конкретний стан коду.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.