Правила работы с репозиторием

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

1) На каждый релиз создается своя ветка, именующая следующим образом release_yyyy.mm.dd (где yyyy – год, mm – месяц, dd - день ). Данную ветку создает один из разработчиков группы dev-senior

2) Изменения попадают в ветку master только перед самым релизом, после того как ветка для релиза была полностью оттестирована. Слияние ветки master с веткой релиза производится одним из разработчиков группы dev-senior. Коммиты напрямую в ветку master запрещены

3) Ветки для разработки именуются следующим образом <аббревиатура проекта>-<номер тикета>_<краткое описание тикета(одним словом, разделение частей слова заглавной буквой, например pdfParsingWithServices)>

4) При совершении коммита необходимо в начале коммита указать номер тикета в аналогичном формате.

5) Необходимо регулярно (не реже раза в день) забирать изменения из текущей актуальной релизной ветки

6) В случае возникновения конфликтов, необходимо обратиться к разработчику –автору того кода, где они возникли.

7) Сложные конфликты может разрешать один из senior-разработчиков

 

2.2 Процедура добавления change request’ов

 

Весь процесс работы с change request’ами в проекте будет происходить в системе баг-трекинга Jira версии 5. Добавление, хранение и изменение состояний будет осуществлять с помощью выбранной системы, в строгом соответствии с распределением прав и обязанностей участников.

 

2.2.1 Добавление новых change request’ов

 

Добавление новых change request’ов происходит по трем направлениям:

1. Создание новых CR’ов, имеющих статус Bug, в ходе ручного или автоматического тестирования членами QA-команды. И дальнейшее их перенаправление на лидера команды тестирования.

2. Создание новых CR’ов, имеющих статус Task или Sub-Task, входе работы над проектом любым членом команды. В связи с необходимостью расширения функциональности системы другими разработчиками или взаимодействия с ними. Может направляться непосредственно на разработчика или на своего лидера группы, в зависимости от важности CR’а и срока сдачи зависящей от него работы.

3. Основное направление создания новых CR’ов, имеющих статус Task, Sub-Task, Improvements или New Features, после получения обновленных требований к проекту или при разработке новой функциональности системы. Добавление CR’ов данным направлением осуществляется непосредственно руководителем проекта. Руководитель проекта производит подробное описание задач и выставляет сроки их реализации. Все созданные CR’ы размещаются в свободный pool CR’ов где находятся до тех пор, пока не будут включены в список задач релиза и направлены на соответствующего разработчика.

 

2.2.2 Распределения change request’ов

 

Для описания данного раздела будем использовать следующие понятия:

· текущий релиз – релиз, над списком задач и багов которого идет работа в настоящий момент;

· следующий релиз – релиз, список задач и багов которого планируется выполнять после текущего релиза;

· заморозка кода – остановка процесса разработки и исправления багов для текущего релиза, слияние всех веток, в которых велась разработка и исправление, в релизную ветку и подготовка этой ветки к передаче на тестирование QA команде.

 

Распределение change request’ов, созданных руководителем проекта, к следующему релизу производится на следующий день после заморозки кода.

Также, на следующий день после заморозки кода начинается тестирование релизной ветки с последним build состоянием проекта в течение 2-3 дней. Производится полное регрессионное тестирование всего проекта и новой функциональности, в ручном и автоматическом режимах.

 

Параллельно с процессом тестирования происходит:

· постановка и обсуждение новых задач;

· распределение CR’ов по отделам разработки и конкретным разработчикам;

· выставляются сроки реализации, и указывается релиз, к которому готовится данная разработка;

· рассчитывается время для устранения багов;

· производятся hotfix’ы для текущего релиза, в случае необходимости.

 

 

2.2.3 Жизненный цикл change request’а

 

В рассматриваемом проекте change request может иметь следующие возможные состояния:

· Open – CR создан, ожидает направления на разработчика и начала работы над ним;

· In Progress – означает, что отвечающий за CR человек приступил к работе над ним;

· Resolved – работа над CR’ом завершена, ожидается проверка QA командой;

· Verified – проверка CR’а проведена, задача готова к мержу и закрытию;

· Reopened – после проверки работоспособности задачи выявлены какие-то недостатки и CR направлен обратно на доработку;

· Closed – CR считается завершенным.

 

 

Правила оформления и работы с change request’ами:

· при оформлении CR’а необходимо указывать:

ü полную информацию о реализуемых задачах или об исправляемом баге с подробным описанием;

ü заносить сведения о компонентах и версии проекта;

ü прикреплять файлы, для улучшения понимания задач;

ü дополнительную информацию, которая поможет при реализации CR’а;

· работа над CR’ом должна производиться по схеме, представленной ниже (Рис.1);

· при переходе в состояние Resolved разработчик должен оставить комментарий с указанием названия ветки, в которой производилась работа, и возможных недоработках задачи, если он осведомлен о них;

· при нахождении недостатков в реализации, тестировщик должен подробно их описать и перевести CR в состояние Reopened на соответствующего человека;

· при выполнении всех требований, поставленных в CR’е, тестировщик может перевести CR в состояние Verified, указав, что он готов к мержу в соответствующую релизную ветку;

· при получении CR’а с состоянием Verified, разработчик должен смержить свою ветку для этого CR’а в релизную, при этом правильно разрешив конфликты совместно с другим разработчиком, если они возникнут. После чего CR можно закрыть и перевести в состояние Closed.

 

Схема, представленная на Рис. 1, демонстрирует жизненный цикл Change Request’а, обуславливая все его возможные состояния и переходы, которые можно совершать для каждого из них. При работе над CR’ом необходимо руководствоваться данной схемой.