Подтвердить что ты не робот

Как интегрировать диаграммы UML в GitLab или GitHub

Я хочу опубликовать некоторую документацию по программированию, имеющуюся в общедоступном репозитории. В этой документации есть форматированный текст, некоторые диаграммы UML и множество примеров кода. Я думаю, что GitHub или GitLab - хорошие места для публикации.

Чтобы опубликовать диаграммы UML, я хотел бы иметь простой способ сохранить их в репозитории и увидеть как изображения в вики. Я не хочу держать диаграммы на своем компьютере (или в облаке), редактировать их, генерировать изображение и публиковать его каждый раз.

Есть ли способ разместить диаграммы в репозитории (в синтаксисе PlantUML будет идеально), связать их в тексте уценки и сделать автоматическое обновление изображений каждый раз, когда диаграмма обновлена?

4b9b3361

Ответ 1

Попробовав другой ответ, я обнаружил, что служба работает медленно и, по-видимому, не до последней версии PlantUML.

Я нашел другой способ, который не так прост, но он работает через сервер PlantUML.com (в облаке). Таким образом, он должен работать везде, где вы можете иметь горячую ссылку на изображение.

Он использует функцию !includeurl и, по сути, является косвенным. Файл уценки ссылается на источник PlantUML, который включает источник диаграммы. Этот метод позволяет изменять источник в GitHub, и любые изображения в файлах разметки GitHub будут автоматически обновляться. Но это требует сложного шага для создания URL для косвенной ссылки.

Diagram of how it works

  1. Получить URL-адрес необработанного источника PlantUML, например, https://raw.githubusercontent.com/linux-china/plantuml-gist/master/src/main/uml/plantuml_gist.puml (используя пример из ответа joanq)
  2. Перейдите на http://plantuml.com/plantuml/form (или PlantText.com) и создайте однострочный источник PlantUML, который использует операцию !includeurl URL-TO-RAW-PLANTUML-SOURCE-ON-GITHUB. Продолжая пример URL, источник PlantUML (мета) выглядит так:

    !includeurl https://raw.githubusercontent.com/linux-china/plantuml-gist/master/src/main/uml/plantuml_gist.puml
    
  3. Скопируйте URL-адрес изображения из изображения PlantUML.com, например http://plantuml.com:80/plantuml/png/FSfB2e0m303Hg-W1RFPUHceiDf36aWzwVEl6tOEPcGGvZXBAKtNljW9eljD9NcCFAugNU15FU3LWadWMh2GPEcVnQBoSP0ujcnS5KnmaWH7-O_kEr8TU, и вставьте его в файл уценки GitHub. Этот URL не изменится.

    ![PlantUML model](http://plantuml.com:80/plantuml/png/3SNB4K8n2030LhI0XBlTy0YQpF394D2nUztBtfUHrE0AkStCVHu0WP_-MZdhgiD1RicMdLpXMJCK3TC3o2iEDwHSxvNVjWNDE43nv3zt731SSLbJ7onzbyeF)
    

Бонус. Вы даже можете получить доступ к формату SVG, изменив часть URL-адреса plantuml/png/ на plantuml/svg/ следующим образом

![PlantUML model](http://plantuml.com:80/plantuml/svg/3SNB4K8n2030LhI0XBlTy0YQpF394D2nUztBtfUHrE0AkStCVHu0WP_-MZdhgiD1RicMdLpXMJCK3TC3o2iEDwHSxvNVjWNDE43nv3zt731SSLbJ7onzbyeF)

Пример на GitHub

https://github.com/fuhrmanator/course-activity-planner/blob/master/ooad/overview.md

Изменение: Альтернатива с прокси-сервисом

Этот способ значительно отличается и проще, чем ответ выше; он использует прокси-сервис PlantUML:

http://www.plantuml.com/plantuml/proxy?src=https://raw.github.com/plantuml/plantuml-server/master/src/main/webapp/resource/test2diagrams.txt

Уценка GitHub для этого будет:

![alternative text](http://www.plantuml.com/plantuml/proxy?src=https://raw.github.com/plantuml/plantuml-server/master/src/main/webapp/resource/test2diagrams.txt)

Этот метод страдает от невозможности указать формат SVG (по умолчанию это PNG), и, возможно, невозможно обойти ошибку кэширования, упомянутую в комментариях.

Ответ 2

Я нашел, что это можно сделать, используя plantuml-gist на http://uml.mvnsearch.org/

Просто поместите действительный файл puml в репозиторий и включите ссылку на этот сайт в документации.

Например, для файла https://github.com/linux-china/plantuml-gist/blob/master/src/main/uml/plantuml_gist.puml в GitHub вы бы использовали http://uml.mvnsearch.org/github/linux-china/plantuml-gist/blob/master/src/main/uml/plantuml_gist.puml в качестве вашей ссылки.

Здесь он выглядит как связанный в StackOverflow:

Изображение UML http://uml.mvnsearch.org/github/linux-china/plantuml-gist/blob/master/src/main/uml/plantuml_gist.puml

К сожалению, он не работает с GitLab. Я всегда получаю файл "Нет PUML файла", хотя я проверил его несколько раз.

EDIT: сервер на uml.mvnsearch.org кажется неработоспособным.

Ответ 3

Это старый вопрос, но он возникает в начале поисков решений этой проблемы.

Другие ответы обсуждают GitHub, но стоит отметить, что GitLab имеет встроенную интеграцию для этого, если вы развертываете собственными силами. По какой-то причине они никогда не активировали эту функцию в своих публичных предложениях. Есть билеты, открытые для активации функции.

Если вы работаете с внутренним размещенным решением, в документации по администрированию есть инструкции

В основном вы

  1. встать на свой собственный сервер Plantuml
  2. установите Enable PlantUml в конфигурации сервера GitLab
  3. напишите PlantUml в вашей уценке
'''plantuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
'''