Инструмент changelogbuilder для автоматической подготовки...

26
Инструмент ChangelogBuilder для автоматической подготовки Release Notes Алексей Буров CI-инженер [email protected]

Upload: positive-hack-days

Post on 21-Jan-2018

203 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Инструмент ChangelogBuilderдля автоматической подготовки Release Notes

Алексей Буров

CI-инженер

[email protected]

Page 2: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Содержание

1. Общие понятия

2. Проблемы

3. Решение

4. Побочные положительные эффекты

Page 3: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Общие понятия и определения

Page 4: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Что есть Продукт

• Системный программный продукт (далее просто Продукт) —

набор файлов (к примеру, установщики), который непосредственно

поставляется Заказчику или Покупателю.

• Пакет (компонент) — атомарная единица продукта. Пакет — единица

программного обеспечения, которая может быть независимо

заменена или обновлена. У каждого пакета собственные:

• Команда разработки

• Принятый процесс разработки и баг-трекеры

• Релизные циклы

• Хранилище исходного кода (vcs)

• Система сборки

Page 5: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Что мы имеем

• Коробочная разработка продуктов

• Увеличивающееся количество Продуктов

• Пакеты (внутренней и внешней разработки) — часть многих Продуктов

• Команды что хотят то и творят имеют свободу действий в выборе

нужных им технологий и процессов для разработки Пакетов

• TFVC, GITLAB — Version Control Systems

• YouTrack, TFS, Gitlab, JIRA — баг-трекеры

• Нет единого места хранения исправленных багов и реализованных фич

по Продукту

• Интеграции между системами есть, но не решают все проблемы

• Продукт собирается с нуля

Page 6: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Проблема

Как понять, какие изменения произошли

Page 7: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Проблема

• Сборка MainProductName 14.1.1000 => MainProductName 14.1.1001

Page 8: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Проблемы

• Неясно, какие изменения были внесены в Продукт, с учетом изменений всех его

Пакетов между сборками

• Тестировщикам непонятно, что тестировать, и как определить, что влияет на баги

• Иногда одна фича требует внесение изменений в несколько пакетов (в Backend и UI) —

нужно удостовериться, что оба пакета были обновлены в сборке

• Хочется иметь два разных CHANGELOG:

• внутренний

• для заказчиков

• Нет отображения иерархий Issue — разработчик указывает Task, но не видно какая

User Story частично решается благодаря этому Task

Page 9: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

РешениеИнструмент ChangelogBuilder для автоматической подготовки Release Notes

Page 10: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Договариваемся с командами

Используемые форматы:

• anytextbefore_290215_anytextafter

• anytextbefore-290215-anytextafter

• :РТ-0000 any text after — Youtrack

• anytextbefore/РТ-0000 any text after — Youtrack

• :TFS-0000 any text after

• #290215: Fixed some problem in logging

• #290215 Fixed some problem in logging

• Bug 123456: done!

• Merge branch 'hotfix/92300' into 'release/v13.0'

• #dev-654321: good fix

Page 11: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Собрать информацию о пакетах

При сборке Продукта в CI-сервере нет информации о Пакетах — какие баг-

трекеры используются, какие URL до VCS

Page 12: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Собираем информацию во время сборки

Давай работай

Commit с TaskID

Сделать сборку

Используемые пакеты

Дай commit-message State

Title,

Assignee

Что там нового в

сборке?

Page 13: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Поддерживаемые системы

Баг-трекеры (допускается использование нескольких баг-трекеров на один

проект):

1. TFS

2. GitLab-issue

3. YouTrack

4. JIRA

5. CustomChangelog — произвольные комментарии в формате MarkDown

VCS:

1. Gitlab

2. TFVC

Page 14: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Решение

Page 15: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Release Notes

Page 16: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Release Notes

Поиск по пакету или номеру багаПереход между сборками

Изменения в одной сборке

Page 17: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Release Notes

Changelog без Task

Новый пакет

Ссылки на commit

Page 18: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

CustomChangelog

>>git commit –m “На это нет Task в TFS, поэтому changelog{Начиная с

данной версии мы стали использовать **RabbitMQ 3.6.0** [подробнее про

изменения](https://wiki.example.com/how-to)}”

>>git push origin

Page 19: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Release Notes

Несколько баг-трекеров

Иерархия пакетов

Page 20: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Release Notes

Page 21: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

РешениеДополнительные плюшки

Page 22: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Дополнительные плюшки

1. Проставление полей/комментариев в баг-трекер системы

Page 23: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Дополнительные плюшки

2.Комментарии о задачах и ссылки на сборки в MergeRequest (GitLab)

• В какую высокоуровневую User Store входит этот Bug/Task

• В какой релиз пойдет этот Task

Page 24: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Дальнейшее развитие

1. Сделать Data-Driven Documents (сейчас из yaml генерируется статичный

html и дублируется информация)

2. Экспорт в финальный RELEASE_NOTES.html для заказчика

или CHANGELOG.md для пуша в git-репозиторий

3. Публикация в opensource-сообщество github.com/devopshq/

Page 25: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Итоги

1. Общие понятия

• продукт != Пакет

• свобода действий у команд

2. Проблемы

• непонятно, какие изменения произошли

3. Решение

• главное — договориться

• база знаний

• общая схема работы

4. Побочные положительные эффекты

1. отчитываемся в Task/Bug

2. получаем информацию в MergeRequest

Page 26: Инструмент ChangelogBuilder для автоматической подготовки Release Notes

Спасибо!

Вопросы?

Алексей Буров

CI-инженер

[email protected]