adr-tools
Многие команды для обсуждения и ведения ADR
используют инструменты, подобные
Confluence и
Wiki. Все мы прекрасно понимаем, что это подход “write once, read never”.
В своей команде я сразу принял решение вести ADR
внутри сквозной технической
документации проекта, используя adr-tools
. Это даёт нам:
- неразрывную связь кода, документации и
ADR
; - единые процессы публикации изменений;
- доступность, открытость и уведомительный характер изменений.
Создание, ревью и замещение ADR
проходят тот же самый путь через Merge
Request, что и код. При просмотре MR легко предлагать правки или прикладывать
патчи, которые можно применять сразу же.
Версия adr-tools
зафиксирована в корне репозитория с документацией в
файле .tool-versions
утилиты asdf
. Это даёт гарантию, что мои коллеги будут
использовать строго определенную версию инструмента:
cat .tool-versions
adr-tools 3.0.0
adr-tools
имеет очень простой интерфейс командной строки:
adr init [path]
— инициализация каталогаADR
. Рекомендую выполнять эту команду в корне репозитория с документацией, в качестве пути указать отдельную папку дляADR
. Команда создаёт в текущей директории файл.adr-dir
, указывающий на только что созданную папку. Это сильно упрощает дальнейшее использование командыadr
прямо из корня репозитория.adr new Use linters for code
— создаёт новую запись в формате.md
по шаблону, предложенному Michael Nygard, с заголовком, переданным в качестве аргумента.adr new -s NUMBER Stop using linters for code
— создаёт новуюADR
, замещающую старую с номером, переданным в качестве аргумента.
Опыт применения adr-tools
показывает, что это, возможно, единственный надёжный
и переносимый инструмент для ведения ADR
.
Шаблон, предложенный Michael Nygard является лучшим, если не единственным, среди
альтернатив.