问题:如何将 UML 图集成到 GitLab 或 GitHub 中

我想发布一些我在公共可用存储库中的编程文档。该文档包含格式化文本、一些 UML 图和大量代码示例。我认为 GitHub 或 GitLab 是发布此内容的好地方。

为了发布 UML 图,我希望有一些简单的方法来将它们更新到存储库中并在 wiki 中作为图像可见。我不想将图表保存在我的计算机中(或云上),编辑它们,生成图像,然后每次都发布它。

有没有办法将图表放在存储库中(最好使用 PlantUML 语法),将它们链接到 markdown 文本中,并在每次图表更新时自动更新图像?

解答

编辑:代理服务的替代方案

这种方式与下面的答案明显不同且更简单;它使用PlantUML 代理服务:

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

GitHub 的降价是:

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

此方法的缺点是无法指定 SVG 格式(默认为 PNG),并且可能无法解决评论中提到的缓存错误。


在尝试另一个答案之后,我发现该服务很慢,并且似乎不符合最新版本的 PlantUML。

我发现了一种不太简单的不同方式,但它通过 PlantUML.com 的服务器(在云中)工作。因此,它应该可以在任何可以热链接到图像的地方工作。

它利用!includeurl函数并且本质上是间接的。降价文件链接到包含图表源的 PlantUML 源。此方法允许在 GitHub 中修改源,GitHub 降价文件中的任何图像都会自动更新。但它需要一个棘手的步骤来创建指向间接的 URL。

工作原理图

1.获取原始PlantUML源的URL,例如https://raw.githubusercontent.com/linux-china/plantuml-gist/master/src/main/uml/plantuml_gist.puml(使用joanq答案中的示例)

  1. 访问http://plantuml.com/plantuml/form(或 PlantText.com)并创建一个使用!includeurl URL-TO-RAW-PLANTUML-SOURCE-ON-GITHUB操作的单行 PlantUML 源。继续使用示例 URL,PlantUML(元)源是:
!includeurl https://raw.githubusercontent.com/linux-china/plantuml-gist/master/src/main/uml/plantuml_gist.puml
  1. Copy the image URL from PlantUML.com's image, e.g., http://plantuml.com:80/plantuml/png/FSfB2e0m303Hg-W1RFPUHceiDf36aWzwVEl6tOEPcGGvZXBAKtNljW9eljD9NcCFAugNU15FU3LWadWMh2GPEcVnQBoSP0ujcnS5KnmaWH7-O_kEr8TU and paste it into your GitHub markdown file.此 URL 不会更改。
![PlantUML 模型](http://plantuml.com:80/plantuml/png/3SNB4K8n2030LhI0XBlTy0YQpF394D2nUztBtfUHrE0AkStCVHu0WP_-MZdhgiD1RicMdLpXMJCK3TC3o2iEDwHSxvNVjWNDE43nv3zt731SSLbJ7onzbyeF)
祖兹 100033


**奖励**:您甚至可以通过将 URL 的`plantuml/png/`部分修改为`plantuml/svg/`来访问 SVG 格式,如下所示

PlantUML model


#### GitHub上的示例

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

### 对私人回购的警告

正如[davidbak](https://stackoverflow.com/users/751579/davidbak)在评论中指出的那样,私有 repo 中的原始文件将有一个包含`token=<LONGSTRINGHERE>`的 URL,并且此令牌会随着源文件的更新而更改。不幸的是,发生这种情况时降价会中断,因此您必须在将文件提交到 GitHub 之后更新自述文件,这不是一个很好的解决方案。
Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐