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 является лучшим, если не единственным, среди
альтернатив.