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

  1. Профиль → Projects → New project
  2. Выбрать шаблон (Board, Table, Roadmap)
  3. Добавить 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 — копится мусор

Практика

  1. Создайте 5 issues в своём репозитории (3 бага, 2 фичи)
  2. Добавьте labels: bug, feature, priority/high, priority/low
  3. Создайте milestone "v1.0" и привяжите issues
  4. Создайте Project Board с колонками Todo / In Progress / Done
  5. Создайте Issue Template для баг-репортов
  6. Создайте PR, закрывающий один из issues

Связанные темы

Ресурсы