GitHub Issues и Projects
Управление задачами, багами и планирование через Issues, Labels, Milestones и Project Boards
Зачем нужно
- Отслеживать баги и задачи в одном месте
- Планировать работу по спринтам/релизам
- Прозрачность: видно что в работе, что сделано
- Связывать задачи с кодом (PR → Issue)
Где используется
- Баг-трекинг в любом проекте
- Планирование фич и задач
- Open-source: пользователи сообщают о проблемах
- Agile/Scrum — вместо Jira/Trello
Предпосылки
Issues
Создание Issue
## Описание бага
При нажатии кнопки "Отправить" на форме регистрации
ничего не происходит.
## Шаги воспроизведения
1. Открыть /register
2. Заполнить все поля
3. Нажать "Отправить"
## Ожидаемое поведение
Форма отправляется, пользователь перенаправляется на /dashboard
## Фактическое поведение
Ничего не происходит, в консоли ошибка: TypeError
## Окружение
- Браузер: Chrome 120
- ОС: Windows 11
Через CLI
# Создать issue
gh issue create --title "Кнопка отправки не работает" --body "Описание..."
# С labels
gh issue create --title "Баг формы" --label "bug,high-priority"
# Список issues
gh issue list
# Посмотреть конкретный issue
gh issue view 42
# Закрыть issue
gh issue close 42
Labels (метки)
Стандартные метки
| Label | Цвет | Назначение |
|---|---|---|
bug |
красный | Баг |
feature |
зелёный | Новая функциональность |
enhancement |
голубой | Улучшение существующего |
documentation |
синий | Документация |
good first issue |
фиолетовый | Подходит для новичков |
help wanted |
жёлтый | Нужна помощь |
wontfix |
белый | Не будет исправлено |
duplicate |
серый | Дубликат |
Дополнительные полезные метки
priority/high
priority/medium
priority/low
status/in-progress
status/blocked
area/frontend
area/backend
area/devops
Создание через CLI
gh label create "priority/high" --color "FF0000" --description "Высокий приоритет"
Milestones (вехи)
Группировка issues по релизам или спринтам:
Milestone: v1.0.0
├── #12 Авторизация пользователей ✅
├── #15 Страница профиля ✅
├── #18 Поиск по сайту 🔄 в работе
└── #21 Настройки аккаунта ⬜ не начато
Прогресс: 50% (2/4)
Создание: Issues → Milestones → New Milestone
Issue Templates
Создание шаблона
Файл .github/ISSUE_TEMPLATE/bug_report.md:
---
name: Баг-репорт
about: Создать отчёт об ошибке
title: '[BUG] '
labels: bug
assignees: ''
---
## Описание
Чёткое описание проблемы.
## Шаги воспроизведения
1. Перейти на '...'
2. Нажать на '...'
3. Прокрутить до '...'
## Ожидаемое поведение
Что должно было произойти.
## Скриншоты
Если применимо.
## Окружение
- Браузер: [Chrome, Firefox, Safari]
- ОС: [Windows, macOS, Linux]
- Версия приложения: [v1.0.0]
Файл .github/ISSUE_TEMPLATE/feature_request.md:
---
name: Запрос функциональности
about: Предложить идею
title: '[FEATURE] '
labels: feature
assignees: ''
---
## Проблема
Описание проблемы, которую решает фича.
## Предлагаемое решение
Описание желаемого поведения.
## Альтернативы
Другие варианты решения.
## Дополнительный контекст
Скриншоты, ссылки, примеры.
GitHub Projects
Виды досок
Table view (таблица):
| Title | Status | Priority | Assignee |
|---|---|---|---|
| Форма логина | In Progress | High | @ivan |
| API поиска | Todo | Medium | @maria |
| Тесты | Done | Low | @alex |
Board view (канбан):
┌──────────┐ ┌───────────────┐ ┌──────────┐ ┌────────┐
│ Backlog │ │ In Progress │ │ Review │ │ Done │
├──────────┤ ├───────────────┤ ├──────────┤ ├────────┤
│ #21 │ │ #18 │ │ #15 │ │ #12 │
│ #25 │ │ │ │ │ │ #14 │
│ #30 │ │ │ │ │ │ │
└──────────┘ └───────────────┘ └──────────┘ └────────┘
Создание Project
- Профиль → Projects → New project
- Выбрать шаблон (Board, Table, Roadmap)
- Добавить issues через "+ Add item"
Автоматизация
Projects поддерживают автоматические правила:
- Issue создан → статус "Todo"
- PR привязан → статус "In Progress"
- PR merged → статус "Done"
Связывание Issues и PR
# В описании PR:
Closes #42
Fixes #42
Resolves #42
# Множественные issues:
Closes #42, fixes #43
При merge PR — связанные issues автоматически закрываются.
Частые ошибки
- Не использовать Issues — задачи теряются в чатах/голове
- Issue без деталей — "Не работает" — reviewer не поймёт что именно
- Не связывать PR с Issue — теряется контекст зачем был сделан код
- Слишком много лейблов — 3-5 категорий достаточно
- Не закрывать неактуальные issues — копится мусор
Практика
- Создайте 5 issues в своём репозитории (3 бага, 2 фичи)
- Добавьте labels: bug, feature, priority/high, priority/low
- Создайте milestone "v1.0" и привяжите issues
- Создайте Project Board с колонками Todo / In Progress / Done
- Создайте Issue Template для баг-репортов
- Создайте PR, закрывающий один из issues