Skip to main content

Регламент работы с задачами разработки

info

Данный регламент применим к процессу разработки самой платформы, а не конкретного её внедрения. При старте внедрения регламент необходимо адаптировать к его требованиям

Используемые системы#

В процессе выполнения задачи вам скорее всего понадобится взаимодействие со следующими системами:

  • Greensight Redmine - здесь находятся постановки задач
  • Greensight Cabinet - канбан доска, определяющая порядок выполнения задач
  • ensi - репозитории с исходным кодом платформы
  • https://jenkins-infra.ensi.tech/ - сервер автоматизации сборки и отгрузки сервисов

В общих чертах схема работы выглядит как показано на схеме

Этап 1. Начало работы над задачей#

  1. Убедитесь, что постановка задачи вам ясна.
  2. Переведите задачу в статус “В процессе”
  3. Разверните локально все сервисы необходимые для выполнения задачи. Если в ходе выполнения задачи вам будет необходимо лишь коммуницировать с каким-то сервисом, а доработки в нём не требуются, то такой сервис можно не разворачивать локально, а использовать развернутый в тестовом контуре
  4. Если вы работаете над большой фичей (блок задач), то для неё должна быть создана отдельная "основная" ветка соответствующая номеру фичи, а мелкие задачи внутри делаться во "вспомогательных" ветках, необходимых исключительно для удобства ревью. Для "основной" ветки необходимо сразу создать PR в master, без назначения Reviewer, пометить как Draft.
  5. Если вы работаете над атомарной задачей, то необходимо работать в одной ветке, созданной от master.
  6. Создайте ветки task-NNNNN во всех сервисах требующих доработки в рамках задачи. NNNNN - номер задачи или блока задач в Redmine.

Этап 2. Реализация задачи#

При реализации задачи НЕОБХОДИМО не забывать о требованиях остальных гайдлайнов

Результат задачи ДОЛЖЕН быть протестирован локально разработчиком посредством автотестов и вручную.

ДОЛЖНЫ быть настроены и успешно проходить pre-commit/pre-push хуки git.

Если вы меняете переменные окружения, то НЕОБХОДИМО проверить не нужно ли это отразить в:

Если при реализации приходится ставить заглушки на существующий код, скрывать поля в спецификации и прочее, то НЕОБХОДИМО добавлять todo в такие места

Этап 3. Загрузка в Gitlab и Code Review#

  1. Пушим ветки в Gitlab
  2. Создаем Merge Request/Pull Request. Если работа ведётся над блоком задач, то в качестве ветки-назначения используется "основная" ветка. Иначе master.
  3. Назначаем Assignee и Reviewer
  4. Проверяем что то, что вы отправили на Review корректно хотя бы с вашей собственной точки зрения
  5. Информируем в мессенджере ревьювера о том, что на него назначен PR. Просим по возможности сразу посмотреть
  6. Переводим задачу в Redmine в статус “Уточнение”, назначенный должен совпадать с Assignee. Обычно это вы сами
  7. Если по PR есть замечания, ревьювер должен написать об этом в задачу и вернуть её в статус "Новая" на человека, указанного в Assignee
  8. Reviewer после аппрува должен: 1) добавить в PR нового ревьювера - техлида. 2) отписать в задачу "PR аппрувнут, переведён на техлида" 3) Написать техлиду в мессенджере о переводе пр
  9. Техлид после аппрува должен перевести задачу в статус "Новая"

Если в задаче требуется изменение конфигов развертывания в k8s (например добавляется новая переменная окружения), то вместе с MR реализующим задачу в сервисе необходимо отправить и MR в репозиторий конфигов развертывания. Этот MR должен внести необходимые изменения в конфигурацию для ветки master. Конфиги для других веток можно править без MR

Если задача вернулась вам с Review на доработки, то она имеет более высокий приоритет, чем остальные задачи Ensi. Более подробную информацию про Code Review можно найти в Code Review Guide

Этап 4. Тестирование#

Если ветка является "вспомогательной", т.е. создана исключительно для удобства ревью, то сразу переходим к этапу 5.

Если работа ведётся:

  • по блоку задач и смержена последняя "вспомогательная" ветка
  • над атомарной задачей и вы уже создали RP

то необходимо отгрузить ветку на фича-стенд по этой инструкции и написать все необходимые ссылки и доступы в задачу. Если на этапе 3 проводились изменения кода, не забываем догружать эти изменения на стенд.

После того как все необходимые аппрувы получены, запускается процесс приёмки: происходит тестирование/сверка с постановкой и прочее, занимается этим аналитик/QA/менеджер.

После успешной приёмки задачу необходимо вернуть разработчику в статус "Новая" с комментарием о том что можно отгружать.

Этап 5. Отгрузка#

После успешно пройденного Code Review и приёмки можно смержить PR.

При мерже задачи важно начинать с репозитория конфигов развертывания.

На данный момент никакие ветки не развертываются автоматически в тестовом контуре Ensi.

В Redmine необходимо оставить комментарий, что задача смержена и перевести её в статус “Готово”.

Если мержилась "вспомогательная" ветка, то, если она была последней в блоке, необходимо вернуться к шагу 4 для передачи на тест всего блока. Исполнитель при этом должен написать комментарий в задачу, что блок целиком готов к тестированию.