3.1. 构建管道¶
源文件是 Markdown 文件。它们要么是纯粹的 Markdown 文件,要么是保存为 Markdown 格式并移除了输出的 Juypyter notebook。对于后者,我们可以使用 Jupyter 配合 notedown
插件直接编辑它们,然后在提交前运行“内核 -> 重启并清除输出”。
然后,我们的构建管道会运行以下步骤来发布最终产物。
将 .md 文件转换为 .ipynb 文件并逐个执行。我们使用 .md 文件作为源文件格式的原因是它便于审查源代码的变更。我们每次都进行评估,以保证每个 notebook 都是可执行的。这个评估步骤可能很耗时,我们可以
假设每个 notebook 可以在 10 分钟内执行完毕,我们可以使用多个 GPU 来加速执行。
如果源 .md 文件自上次评估以来没有发生变化,我们可以重用缓存的 .ipynb 文件以避免再次执行。
我们使用多个进程来并行运行 notebook。
带有输出的 .ipynb 文件可以直接上传到 Github,这样用户可以克隆下来在本地或云端运行。我们也会将所有文件打包成 zip 格式,方便用户轻松下载。
这些 .ipynb 文件随后被转换为与 Sphinx 兼容的 .rst 文件格式。额外的预处理步骤用于处理图片/表格/引用的引用。
使用 Sphinx 构建 .html 和 .pdf 文件。
将所有 .html/.pdf/.zip 文件发布到线上,例如发布到一个 AWS S3 存储桶中。