构建过程-如何使用Graphviz自动生成SVG文件



我决定开始一个项目,本质上是一个网站。本网站将通过Github Pages发布。

我的网站将包括SVG文件。SVG文件由Graphviz从一个dot文件生成。其思想是,要修改SVG中显示的信息,用户可以更改dot文件的定义,然后Graphviz将重新生成SVG,并且一旦web页面被服务,新的SVG图像将自动显示。

但是,我仍然处于一种不舒服的情况,即要求编辑DOT文件的贡献者运行调用Graphviz的脚本,然后向SVG DOT文件提交更改。

如果贡献者更改了dot文件,但忘记运行Graphviz脚本,然后提交,存储库将包含彼此不一致的dot文件和SVG。

我不能不跟踪dot文件的版本,因为SVG是乱码——dot文件是人类可编辑的定义。我不能不跟踪SVG,因为,否则它将如何保持最新和可用的Github页面消费?然而,随着这两方面的跟踪,我实际上是以一种冗余的方式跟踪变化,并引入冲突的机会。这有点像对C代码和编译后的.exe 进行版本控制。这是愚蠢的。

确保无论何时编辑dot文件,SVG都保持同步的最佳方法是什么?我需要认真地重新考虑我的策略吗?

您可以考虑设置一个Jenkins实例来完成此操作。创建一个作业,由点文件中的更改触发(使用git插件)。作业将执行点命令,然后提交新的svg文件。

生成的文件不应该通过提交到您的存储库。

默认情况下,GitHub Pages使用Jekyll创建站点。

如果你正在使用这个工作流,那么我建议你看看编写/使用Jekyll Generator插件来从你的dot文件动态创建这个SVG。

最新更新