Skip to content

Latest commit

 

History

History
318 lines (233 loc) · 19.4 KB

workflow.md

File metadata and controls

318 lines (233 loc) · 19.4 KB

Logo

Рабочий процесс департамента разработки

Zenhub Workspaces


Подготовка к спринту

Взаимодействие с владельцем продукта

Владелец продукта / Product Owner (PO)


  • Новые issues создаются и добавляются в столбце New issues
  • Planned - Needs Definition - здесь карточки, которые нужно сформулировать в конкретные issues. Если issue получается очень большая, то разбиваем ёё на небольшие issue так, чтобы на их выполнение уходило не больше недели. Создаём Epic и группируем связанные issue в этом Epic
  • Поместите issue либо Epic в колонку Product Backlog после завершения определения. Четко определенная issue будет включать в себя описание требования, ключевые результаты/определение выполненного, макеты, если нужно
  • Расставить карточки по порядку приоритета, что самое важное – вверх. Можно обсудить с командой

Примечание:

Спринт длится 2 недели. Определяем что мы будем делать: исправлять ошибки, добавлять новые функции, или все вместе.


Разработчик / Developer (DEV)

Начало работы над issue


  • Сначала проверьте, нет ли Pull Request, Issues, которые назначены вам, они в приоритете
  • Выберите одну, или несколько задач из Product Backlog
  • Проверьте что задача четко определена
  • Перенесите карточку либо карточки в Sprint Backlog
  • Назначьте себя исполнителем issue
  • Перенесите карточку в In Progress
  • Создайте новую ветвь от текущей рабочей ветви (develop)
  • Решите issue
  • Во время работы над issue старайтесь фиксировать (коммитить) небольшие изменения, и давать им понятные названия
  • Создайте PR для feature-ветки в develop
  • При создании PR необходимо коротко описать проделанную работу в Description
  • Убедитесь, что PR связан с соответствующей рассматриваемой issue
  • Убедитесь, что для проверки PR, назначено как минимум 2 Reviewers. Уведомите Reviewers о том, что им необходимо проверить PR
  • Проведите ручную проверку кода, чтобы убедиться, что нет простых ошибок, таких как оставшиеся комментарии и console.log()
  • При создании PR карточка автоматически перемещается в Review/QA
  • Если сделана последняя задача из Epic то перенесите Epic в Review/QA
  • Если есть замечания по коду от Reviewers, вы получите комментарии по недостаткам кода
  • Как только получаете два одобрения, подтверждаете запрос на слияние веток (merge pull request)
  • После слияния веток удалите ветку, над которой вы работали
  • Перенесите карточку в Done
  • По окончании Sprint Review перенесите карточку в Closed

Примечание:

По окончании спринта делать release в ветку master


Правильное именование веток


{type}-{name}-{number}

где type - тип ветви (feature, fix) name - псевдоним разработчика, работающего над ветвью number - номер прикрепленного issue GitHub

Например, feature-john-34

Примечание:

Если над проектом идёт командная работа, то при создании ветви необходимо указывать псевдоним разработчика, работающего над ветвью. В случае, если над ветвью работают несколько разработчиков, псевдоним не указывают. Этого правила надо также придерживаться в случае, если вы один работаете над проектом (feature-12)


Как исправлять ошибки


  • Убедитесь, что шаги для воспроизведения ошибки ясны и точны
  • Если ошибка критичная, то делаем hotfix ветку от master, проходим все шаги; если все в порядке, то публикуем в master и в develop
  • Если ошибка не критичная, то работаем по обычной схеме

Проверка PR


  • Не допускать закомментированных кусков кода, console.log()
  • Changelog и version в package.json надо обновить (sermver)
  • Стараться придерживаться codestyle. Если есть какие-то добавления, замечания - дополнять ими стандарт оформления кода
  • Не забывать про документацию. Если внесены изменения в UI/UX, отметить это в документации, обновить скриншоты

Семантическое версионирование 2.0.0 (sermver)


Учитывая номер версии {major}.{minor}.{patch}, следует увеличивать:

  • major-версию, когда сделаны обратно несовместимые изменения API
  • minor-версию, когда вы добавляете новую функциональность, не нарушая обратной совместимости
  • patch-версию, когда вы делаете обратно совместимые исправления

Семантическое версионирование также поддерживает и дополнительные части, идущие после патч версии. Например, там могут быть метки о том что это предварительный релиз или какой-то конкретный билд. Например: 1.2.3-beta.1, 1.2.3+abc123 или 1.2.3-beta.1+abc123 — обратите внимание что билд отделяется + (плюс), а наименование предварительного релиза - (дефис). Данные дополнительные указатели говорят о том, что релиз не стабильный, и в нём могут как всё поменять, так и вовсе удалить, либо добавить совершенной новый функционал в будущем.

Для подробного ознакомления с семантическим версионированием перейдите на страницу Semantic Versioning


Журнализация изменений проекта (Changelog)


Все заметные изменения необходимо задокументировать в этом файле

Changelog

[0.1.0] - 2022-04-15
Added (for new features)
  • заголовок изменения
Changed (for changes in existing functionality)
  • заголовок изменения
Fixed (for any bug fixes)
  • заголовок изменения
Remove
  • заголовок изменения
Deprecated (for soon-to-be removed features)
  • заголовок изменения
Security (in case of vulnerabilities)
  • заголовок изменения

Правила организации кода проекта (codestyle)

Поддержка читаемости кода


  • В коде должны быть понятные имена для переменных
  • Выносить дублируемые куски кода в файл helper.js, который находится в корне проекта
  • Стараться создавать файлы, код которых не превышает 100 строк
  • Искать возможность вынести код в RCL, или расширить существующую библиотеку
  • Использовать hooks для того чтобы оптимизировать приложение
  • Не делать слишком перегруженный код с множеством if/else
  • После себя оставлять код чуточку чище и лучше
  • Если кусок кода сложен для понимания - надо добавить комментарии в формате jsdocs

Форматирование кода


Для форматирования кода в проекте настроен eslint и prettier.


Деплой


Для деплоя настроены экшены.
Деплой делается в netlify.


Структура папок и файлов


Единственными конкретными папками Next.js являются папки pages, public и styles

- components
    - Appbar.js
- pages
    - api
        - getUser.js
    - _app.js
    - index.js
- public
    - favicon.ico
    - vercel.svg
- styles
    - globals.css
- utils
    - hooks.js
    - supabaseClient.js
- CHANGELOG.md

- .env.local.example

- helper.js

- workflow.md

components - Здесь находятся компоненты приложения, которые переиспользуются на страницах

pages - Это компоненты React. Каждый файл — это страница, а каждая страница — это компонент React.

_app.js - Это пользовательский компонент, который находится в папке страниц. Next.js использует этот компонент для инициализации страниц

index.js - Это страница, которая отображается, когда пользователь посещает корень приложения

api - Здесь находятся маршруты API (API routes) и сопоставляются с конечной точкой


Порядок импорта


Импорт стараемся группировать.

  • React
  • Next
  • сторонние контексты/компоненты/хуки
  • наши контексты/компоненты/хуки
  • наши константы/конфиги/хэлперы
  • картинки/иконки

Например

import { useState, useEffect, useRef } from 'react'

import Head from 'next/head'

import { useRouter } from 'next/router'

import Layout from '../components/Layout'

import VcanaLogo from '../public/vcana-logo.svg'

Порядок написания классов в Tailwind CSS


  • Макет
  • Флексбокс и Сетка
  • Интервал
  • Размеры
  • Типография
  • Фоны
  • Границы
  • Эффекты
  • Фильтры
  • Переходы и анимация

Например

className="custom-class group absolute flex justify-center pt-0 w-1/4 sm:w-1/3 md:w-1/2 text-xl text-slate-100 bg-orange-500 border-r-2 border-stone-800 shadow-md cursor-pointer hover:text-gray-100 hover:bg-blue-500"

Справочник


Scrum - методология управления проектами.

Kanban - это метод, в основе которого лежит система вытягивания (pull system) производства, то есть, ограничение на количество незавершенной работы (work-in-process). Здесь все устроено так, чтобы застоявшиеся issue легко было отследить и перераспределить внутри команды. Это позволяет обнаруживать операционные проблемы и мотивировать сотрудников к улучшениям.

Pipeline - колонки доски, которые служат для разбиения этапов работы над issue

Issue - задача, созданная в репозитории или в ZenHub. Обладает свойствами:

  • Labels - ярлыки, помогающие классифицировать issue, для каждой issue можно поставить один или несколько ярлыков
  • Milestones - фазы проекта, позволяет соотносить issue с фазами в которых они должны быть реализованы
  • Estimates - оценка трудоемкости issue (измеряется в story points). Без данного показателя невозможно использовать диаграммы ZenHub
  • Assignees - исполнители issue
  • Dependencies - зависимости. Позволяет определить те issue, которые зависят от исполнения других

Pull Request (PR) - это запрос на интеграцию изменений из одной ветки в другую

Reviewer - обозреватель запроса на интеграцию изменений из одной ветки в другую

Bug - ошибки в системе. issue с данным лейблом имеют наивысший приоритет и должны быть взяты в работу первыми.

Feature - новая функциональность

fix - Если вы работаете над исправлением ошибок проекта, то ветвь начинается со слова fix

Refactoring - issue, связанные с корректировкой ранее написанного кода

WIP - issue, находящиеся в работе

Deploy — это процедура переноса сайта на сервер

JSDoc — генератор документации в HTML-формате из комментариев исходного кода на JavaScript

New Issues Этот Pipeline является отправной точкой для новых issues. Любой из команды может создать issue в любое время и знать, что благодаря этому процессу она будет видна всем.

Icebox issues с низким приоритетом, которые не будут нужны в ближайшее время

Epics это тема работы, которая содержит несколько issues. Эпики — это лучший способ сгруппировать связанные issues в более крупные цели, охватывающие спринты

Planned - Needs Definition issues, которые нужно рассмотреть и оценить. Если issue получается очень большой, то превращаем карточку в Epic

Product Backlog Предстоящие issues, которые были рассмотрены, оценены и расставлены по приоритетам сверху вниз

Sprint Backlog issues, готовые к работе в спринте, с приоритетом сверху донизу.

In Progress issues, над которыми сейчас работает команда

Review/QA issues, которые открыты для тестирования. Код завершен, ожидается отзыв

Done issues протестированы и готовы к развертыванию в рабочей среде