Февраль' 2020 в Docops чате

Это краткое резюме дискуссий и полезных ссылок в чате Docops в феврале 2020.

asciidoc

Сборка образа с документацией и настройка CI

Переход с help&manual на ssg

Мониторинг сайтов с документацией

Документирование структуры компьютерных сетей

Миграция документации из Confluence

Упомянутые инструменты: hugo, antora, swagger, help&manual, Racktables, iTOP, sunbird dcim, pandoc, doorstop, nots.io.

04.02

  • @ramil6630 спросил Коллеги, кто пробовал antora и Hugo. Что выбрать для работы с документацией? Планируем asciidoc в качестве формата.

антора для аскидока. Для Hugo тоже есть поддержка asciidoc, при этом он на go. Тему можно использовать: https://docsy.dev/

  1. постоянно, при правках, надо удалять public
  2. импортирование новых shortcodes еще та задача
  3. многие js-файлы написаны без соблюдения стандартов разметки

---------

  1. не нужно, нужно ребилдить командой hugo. Там инкрементальная сборка. Если очень хочешь зачищать каждый раз, напиши makefile. Но вообще в процессе работы это не нужно. И обрати внимание на hugo serve, это очень удобно.
  2. положить файлы в папку
  3. код трогать не надо там
  • Как сделать поддержку версионности на Hugo? Первая мысль: Класть в соседние папочки версии и в хэдере вместо языков тулить версии. Получается отдельный сайт для каждой версии.

06.02

Если ты делаешь документацию, то тебе нужно только собрать образ. Надо написать Dockerfile (это простой скрипт) и сделать:

docker build -t registry.mycompany.com:443/group/project/docs
docker login registry.mycompany.com:443
docker push registry.mycompany.com:443/group/project/docs

Можно в этом executor не собирать внутри образ как в матрёшке, а прям уже нужный образ на нём запустить. тогда и логи информативнее станут, и возможно будет понятно, где ломается и почему доки не обновляются.

Есть заготовки документации на разных инструментах с заранее настроенной сборкой и публикацией на GitLab Pages. Отличная песочница, чтобы попробовать разработку документации как кода. https://gitlab.com/pages/

09.02

  • @ayemelianov Коллеги! А есть у кого-то опыт перевода с одного инструмента публикации -на другой? Мне сейчас надо реализовать переезд с Help and Manual - на что-то менее глючное и более простое.

Да, переводил с AuthorIT, с локализацией на Sphinx, reStructuredText. В целом идея такая: найти промежуточный формат F, чтобы оптимально конвертировать HM -> F -> язык разметки. У нас это был HTML, но мог бы быть и XML какой-нибудь или даже DOCX.

10.02

Сложно, проприетарно, глючно. Ещё по нашему опыту с аналогичным AuthorIT: долгая сборка и публикация, много ручных действий, риски всё протерять, изолирует техписателей и не допускает других людей к работе над доками, нет инструмента для ревью. Какие-то свои форматы файлов, которые сложно редактировать, не имея H&M под рукой + очень сложная процедура сборки, часто вылезают непонятные ошибки + часто собирает очень долго, даже слишком долго + сложно с чем-то интегрировать.

  • Как конвертировать картинки? pandoc (https://pandoc.org/) умеет конвертировать DOCX в reST, Markdown или AsciiDoc вместе с изображениями:

pandoc -f docx --extract-media images -t rst -o document.rst document.docx
pandoc -f docx --extract-media images -t markdown -o document.md document.docx
pandoc -f docx --extract-media images -t asciidoc -o document.adoc document.docx

Изображения будут в директории images. В любой разметке сразу будут правильные ссылки на них.

11.02

  • @Elaneor: Хотелось бы спросить у тех, кто работает с mardown, как вы организуете хранение файлов, как можно, например, "хотя бы оценить объем текста", как отслеживаете изменения этого текста (например, если документы и их изменения для следующих версий планируется отдавать на перевод)?

Пока что могу предложить свой старый доклад на SECR. Там я рассказывал в целом о преимуществах подхода «документация как код», в том числе было про хранение файлов, ревью, переводы и публикацию. https://youtu.be/sVStWzgDnNA

👍Конспект митапа, "Что делать, чтобы документация не болела?" http://docops-hq.github.io/conf/teamleadconf/20/documentation_challenges/

12.02

  • Всем привет. У нас в компании возник интерес к подходу «документация как код». Подскажите источники, с которых можно начать изучение данной темы, чтобы еще больше себя не запутать

https://starkovden.github.io/Switching-tools.html и https://www.youtube.com/watch?v=6W20lMycgIY&list=PL8i3cg9-YErMG1ZrMNDGUjTQe-p4tRgY3

  • @DarthVader: Попробовал https://diagrams.mingrammer.com/docs/node Резюме: (+) писать легко
    (+) питон
    (+) *aC подход в полный рост.
  • (-) невозможность делать двунаправленные связи
    (-) невозможно показать тип связи или больше одного их типа
    (-) под капотом graphviz, поэтому на автомате выходит уродливое нечто, особенно если в диаграмме больше полудюжины элементов и связи не 1:1
    (-) если нужно быстро сгенерировать диаграмму, с таким же удобством и эстетическими свойствами пойдет и PUML.
  • @baharev_np: Мигрируем документацию из Confluence в Hugo. а каком этапе надо выпиливать все лишние атрибуты из текста и как вообще привести его в удобоваримый для хьюго вид?

На этапе HTML его надо попарсить и вычистить. Я использовал Python и BeautifulSoup.

вот взгляните на примеры в разделе converting content https://developer.atlassian.com/server/confluence/confluence-rest-api-examples/

У самого такая задача есть (у меня даже выгрузки в html нет из конфы)
есть еще https://www.npmjs.com/package/confluence-to-github-markdown


14.02

  • @mrxcrr: Кто-нибудь где-нибудь встречал удобный для ежедневного использования формат для описания/документирования активно меняющейся компьютерной сети, со всеми значимыми узлами (рабочие станции, сервера, виртуальные машины, маршрутизаторы), но чтобы с информацией о ролях таких узлов, их состоянии, заметками об установленном ПО и т.д.

https://habr.com/ru/post/444410/

https://www.open-audit.org/

Умеет всякое, в том числе и экспорт-импорт
https://community.opmantek.com/pages/viewpage.action?pageId=26640404

Racktables или iTOP с соответствующими плагинами. Если платно, то есть недорогие инструменты от sunbird (dcim). Очень крутые. Ну из этого класса было ещё glpi. Не знаю, как оно сейчас.

  • @DarthVader: Подходить с выбора инструмента методологически неправильно, я считаю. Надо ответить на несколько принципиальных вопросов: как эта система будет заполняться, кем, как часто, кем будет использоваться, для каких целей.
    Опять же, зависит от того, сколько единиц конфигурации или ассетов предполагается хранить

17.02

  • @apoint: Я Александр. Делаю проект nots.io Мы даём возможность прикреплять документацию к коду (просто текст, маркдаун, картиночки, pdf-ки и даже файлы с гуглодиска). Привязать можно к функции, файлу, коммиту или бранче.

Мне очень нравится индекс актуальности на каждом методе и очень не нравится, что доки хранятся отдельно от кода. Хочу чтобы тулза работала как анализатор (по типу code coverage) и, может быть, как CMS над гитхабом, но доки чтобы остались в файлах с кодом.

Анализ того, что код соответствует стандартам (например, о покрытии документацией), это работа lint'ера кода, например, https://checkstyle.sourceforge.io/writingjavadocchecks.html и https://eslint.org/docs/rules/require-jsdoc.

  • 👍Системные требования как код - Инструмент Doorstop. Каждое требование - отдельный файл в формате YAML, есть интеграция с Python. Требования для самого инструмента описаны в виде требований doorstop - https://github.com/doorstop-dev/doorstop/tree/develop/reqs

Презентация - https://speakerdeck.com/jacebrowning/doorstop-requirements-management-using-python-and-version-control

  • @ramil6630: Кто-нибудь может мне объяснить, почему при всей крутизне asciidoc and rst, никто их не выбирает?

Высокий порог входа. Экосистема инструментария вокруг md шире, и расширяется она тоже быстрее. Ещё у reST ужасная, старперская, насквозь академическая документация. Они называют ссылки hyperlink targets. Вы видели вообще живых людей, которые бы так называли ссылки?

Посчитать, сколько часов разработчика и тестировщика, а также проджекта можно сэкономить (ориентировочно).

Хипстерский, пожалуй, Gatsby, но начинать новые проекты я хочу как и раньше на Sphinx, потому что он всё равно лучше для моих задач. некоторое сравнение есть на сайте https://staticschool.com/.

  • А есть готовые решения по генерации доки (md например) из JS-тестов? Cypress, Jest, например. Для тестов есть кастомные репортеры, но это отчёт о прогоне тестов, а не документация. Можно написать трансформер для ssg.

Помнится, был фурор про gostdown - набор инструментов для конвертации маркдаун в документы, оформленные по ГОСТу. Лично мне это показалось набором костылей, а задействовать виндовый ворд - вообще ставило крест на автоматической сборке через CI. Так вот, обнаружил на мой взгляд самый идеологически правильный инструмент. https://bitbucket.org/Lab50/espd-docbook5/src/master/

22.02

  • Интересно, а как посчитать, сколько техпис зарабатывает фирме?

Можно начать с того, что собрать данные — если человек занимается написание материалов для пользователей и для разработчиков, ну те же onboarding guides — от ребят из поддержки и от вновь прибывших/прибывающих разработчиков (то есть попытаться сравнить сколько у них времени уходит на разобраться самому и прочесть уже существующие материалы от Тех Писателя и при этом меньше дёргать старших ребят.

Дальше всё зависит от “политики партии”: некоторые считают, что раз уже всё написано, сделано и поставлено на рельсы, то можно избавиться от человека и сэкономить фонд зп.

  • @SenyaChe Подскажите, какой мониторинг используете для онлайн хелпов? Хочу отслеживать ошибки фронта + серверные

Разбирать логи nginx, который раздаёт статику. С этим лучше всего прийти к опсам и спросить, что они уже используют для мониторинга других сервисов. Там будет какой-нибудь ELK stack или похожее. Вам отдадут панельку с графиками: количество запросов вообще, сколько 301/302 (надо обновить ссылку), сколько 404 (надо срочно обновить ссылку) и т.п.
Если вы используете CDN, то задача несколько меняется — или у него есть своя панель аналитики, или надо доставать логи.

Внешний мониторинг, который регулярно проверяет доступность сайта из разных точек мира. Например, site24x7.com.

Есть ошибки фронта, которые обнаруживаются не мониторингом, а линтерами и автотестами:

  • валидность HTML, CSS, JS
  • доступность (accessibility): картинки подписаны, навигация размечена, текст достаточно контрастный и крупный
  • скорость загрузки страниц; время до момента, когда пользователь что-то может прочитать
  • работа редиректов.

Доклад про инфраструктуру фронтенда: https://www.youtube.com/watch?v=yWPAW59e1AU

25.02

  • @exebeeche: а бывало у кого нить, чтобы пандок криво перебрасывал из md в rst?

У него есть свои особенности и он не все директивы reST знает. Например, не знает те, которые добавляет Sphinx.


26.02

  • Вопрос ко всем: а есть ли какие-то инструменты, чтобы преобразовать XML, который используется в Help and Manual, в markdown?

Из hm можно сразу делать html. Разработчики hm обещают конвертацию в MD в будущих версиях http://helpman.it-authoring.com/viewtopic.php?t=15517