Документация¶
README.md¶
В репозитории в корне должен находиться файл README.md
, в котором указаны:
- Краткое описание проекта
- Требования к окружению для разработки
- How to build: описание, как собрать проект
- Cake: если используется автоматизированная система сборки, должно быть описание команд
- CI: если настроен CI, должно быть описание этапов
- Структура проекта: краткая описание структуры репозитория
Документация к проекту должна находится в том же репозитории, что и сам код, в каталоге docs
.
Структура каталога следующая:
-docs
|- images
|-- App1
|-- App2
|- App1
|- App2
|- schemas
|-- App1
|-- App2
В images
помещаются все изображения, которые есть в документации, в schemas
- схема, диаграммы. Схемы выполняются в draw.io, исходники схем хранятся вместе с кодом для версионирования. В указанных каталогах нужно также создавать подкаталоги для каждого приложения или сборки. Для сборок и приложений возможно группировка в подкаталоги.
Дальнешие пункты требуют обсуждения и актуализации [15.02.2021]
Для каждого приложения есть необходимый минимум документации:
index.md
: общая информация о приложении или сборкеrequirements.md
: требования к системе для запуска приложения (версия framework, OS, наличие других сервисов, БД и прочего)configs.md
: подробное описание параметров приложения, на что влияют, примерыinstall.md
: описание процесса установки, конфиги установки (nginx
,systemd
, примерNLog.config
дляproduction
)update.md
: описание процесса обновления (опционально)
Также будут полезные следующие опциональные файлы в подкаталоге optional
:
limitations.md
: ограничения работы приложения (при каких данных не будет работать, ограничения по памяти и т.д.)architecture.md
: описание архитектуры- любые другие полезные статьи
В корне docs
могут находиться различные статьи, которые относятся к работе системы в целом (архитектура, взаимодействие систем, use-case'ы, описание работы для пользователя и т.д.).
Генерация документация в виде сайта¶
На основе md
файлов с помощью mkdocs
разворачивается статический сайт с документацией.
Важно. Сайт статический. Авторизации нет. Нельзя выкладывать чувствительную информацию. Но можно обойти, если в nginx настроить ограничение доступа по ip (пример тут).
mkdocs¶
Установка¶
Ниже описана установка на Linux
системы, т.к. сборка проходит на этих серверах.
Если есть желание работать на
Windows
, можно дополнительно описать установку на него в этой статье.
Для создания сайта нужно:
- Установить
python
(обычно уже установлен); - Установить
pip
(how to)Важно. Для корректной работы
mkdocs
нуженpython
версии 3 и выше.pip
тоже нужен 3 версии. - Установить mkdocs:
sudo pip3 install mkdocs
- Установить темы. Например, для U-CATI выполнить:
sudo pip3 install mkdocs-material
- Установить дополнительные плагины. Например, для организации вложенных файлов необходимо поставить
sudo pip3 install markdown-include
mkdocs
для своей работы использует файл mkdocs.yml
. К сожаления, mkdocs
не позволяет указать путь к файлу,
а требует, чтобы команда выполнялась в той же директории, в которой есть файл (предполагается, что один репозиторй -
один сайт документации). Для создания нескольких сайтов с документацией из одного репозитории (например, в проекте U-CATI
для менеджеров и
исполнителей) приходится идти на ухищрения, а именно создавать еще один каталог docs
, потому что файл конфигурации
не может лежать в той же директории, где и файлы документации.
Создание сайта¶
Для создания сайта нужно выполнить команду:
mkdocs build --clean
Можно развернуть его локально для тестирования:
mkdocs serve
Можно в файле
mkdocs.yml
указать параметрdev_addr: ip:port
, по которому командаserver
будет разворачивать документацию.
mkdocs
позволяет использовать различные темы для оформления сайта. Мы используем mkdocs-material
.
Поиск¶
Сайт поддерживает поиск статей. Т.к. сайт статический и у него нет backend'а, то для поиска при генерации создаются индексы. По умолчанию они создаются только на английском языке. Чтобы включить поиск на русском нужно в файл конфигурации добавить следующие параметры:
plugins:
- search:
lang:
- 'en'
- 'ru'
Отдельные темы используют свой поисковый движок. Для поиска при использовании темы material
нужно в конфиг добавить следующее:
extra:
search:
language: 'en, ru'
Вложенные файлы¶
Может возникнуть ситуация, когда в документации для разных пользователей есть как повторяющая часть, так уникальная.
Общую часть можно вынести в общий файл, который потом можно "включить" в уникальный. Например, в описании работы с
проектом есть общая часть, которая будет полезна всем пользователям, и инструкции по изменению статуса проекта, которая
должна быть доступна только менеджеру. Общую часть выносим в common
, а для менеджера создаем отдельный файл, в котором
нужно указать следующую инструкцию:
````
Чтобы все это работало, нужно установить отдельный инструмент для препроцессинга md файлов - `markdown-include` (описано выше).
После в файл конфигурации нужно добавить следующие строки:
```yaml
markdown_extensions:
- markdown_include.include:
base_path: docs
Общая документация¶
Чтобы не дублировать текст нужно общую часть размещать в common
и делать символьные ссылки на эти файлы в каталогах
manager
и contractor
(обязательно символьную ссылку, чтобы все работало на разных машинах).
Делать это нужно через консоль:
ln -s ../../common/profile.md ./misc/profile.md
Важно указывать относительный путь, а не абсолютный.
Ссылки создавать обязательно, чтобы в самих md файлах можно было делать ссылки на другие страницы документации.
Изображения¶
Изображения также должны храниться в каталоге docs
, который будет публиковаться как сайт.
Чтобы не дублировать изображения также необходимо делать символьные ссылки.
Общие изображение также нужно размещать в каталоге common/images
.
Полезные ссылки¶
Различные полезные ссылки по созданию документации: