Автоматическая сборка PDF-документации из Markdown в GitLab CI

Готовили релиз нашего нового решения для 1С по отправке СМС-подтверждений и столкнулись с классической задачей. Документацию мы ведем в Markdown. Это удобно для нас, но не для конечного клиента.

Клиенту нужен привычный PDF. Простой и надежный.

Главный вопрос: как автоматически собирать несколько .md файлов с картинками в один PDF-файл прямо в пайплайне GitLab CI? Особенно когда твои раннеры работают на PowerShell под Windows, как у нас.

Решение нашлось в связке Docker и Pandoc. Вот пошаговый план:

  • Основа: Берем готовый Docker-образ с Pandoc.
  • Подготовка: Внутрь контейнера копируем нашу папку docs с Markdown-файлами.
  • Сборка: Запускаем Pandoc, который конвертирует все файлы в единый PDF.
  • Выгрузка: Копируем готовый PDF из контейнера и сохраняем его как артефакт в GitLab.

Подход универсален, неважно, где запущен Docker. Вся логика инкапсулирована в контейнере.

Готовый pipeline лежит здесь:

А вот как это выглядит на скришотах:

Корень репозитория
Корень репозитория
Как хранится документация в проекте
Как хранится документация в проекте
Файл с настройками PanDoc
Файл с настройками PanDoc
Файл gitlab-ci
Файл gitlab-ci
Главный файл документации README.md, но их может быть больше
Главный файл документации README.md, но их может быть больше

А как вы решаете подобные задачи с документацией?

Если статья показалась вам интересной и полезной, то буду благодарен за подписку на мой Телеграм-канал Код ИТ-директора, где я описываю случаи из своей жизни и публикую полезный контент по ИТ.

Начать дискуссию