在持续集成服务器中运行 mdbook
有几种集成服务器(CI),比如: GitHub Actions or GitLab CI/CD ,它们的作用是自动测试和发布你的文档。
接下来,有几个方式配置这些服务器。 更多信息,可看 Automated Deployment 。
Pre-compiled binaries
最简单的方式,莫过于去 GitHub Releases page,下载执行文件。
使用 curl
快速下载:
mkdir bin
curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.15/mdbook-v0.4.15-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=bin
bin/mdbook build
这个方法的几个特点:
- 够快,没有什么缓存。
- 不用安装 Rust。
- 需要自己手动更新 当然,如果是要锁定某个版本的话,这是一个优势。 然而,自动更新,也是许多人想要的。
- 搭上 GitHub CDN。
Building from source
这个方式,要求安装了 Rust。 会有些服务器是安装的, 但如果没有,你需要加安装 Rust 的步骤。
一旦 Rust 安装上了, cargo install
下载和构建 mdBook。.
强烈建议使用 SemVer 版本语法,这样你就能得到一个 non-breaking 版本的 mdBook。
For example:
cargo install mdbook --no-default-features --features search --vers "^0.4" --locked
其中,包含了几项建议:
-
--no-default-features
— 禁掉默认功能,比如:mdbook serve
命令需要的 HTTP server,这些在 CI 上都是不需要的。加速构建。 -
--features search
— 禁用了默认功能,意味着你要指定功能,比如,搜寻 search 就挺有用的。 -
--vers "^0.4"
— 会下载与0.4
最为接近的版本。 但是,像0.5.0
之后的版本就不会安装。因为,它们有可能不兼容。 Cargo 会帮你自动升级。 -
--locked
— 锁定依赖的版本,要是没有--locked
, 所有的依赖就会用最新的版本。即可能是 bug 修复,也可能导致构建问题。
最好看看,关于缓存的选项,能帮你的构建节省时间。
Running tests
mdbook test
会测试你的 Rust 测试代码。也用来测试书内的代码示例。
这个方式,要求安装了 Rust。 会有些服务器是安装的, 但如果没有,你需要加安装 Rust 的步骤。
除了,恰当的 Rust 版本,和mdbook test
,你已然不需要其他的了。
当然,若是你像运行其他测试,像 mdbook-linkcheck 检查,网络链接的完整. 或是 样式,拼写啊,杂七杂八的测试啊,都可以在 CI 上,搞定。
Deploying
自动发布的功能,有些人希望每次改变就来一次;当然,也特殊 tag 再来一次,这些都可以做到。
或许,你还想了解下,如何推送新改变的。 例如, GitHub Pages 仅仅像正常 push 下,就自动搞定。
下一步,自然是 mdbook build
,生成内容,输出到目标目录 (默认是,当地的 book
目录) 。
更多请看 Automated Deployment ,上面有多个不同示例。
404 handling
错误链接就给 404 页面。默认名称就是 404.html
。
像 GitHub Pages ,就会自动跳转。
其他,可能需要配置配置。
如果你的书,不是放置在顶层网址上,那么 output.html.site-url
必不可少。
书用到的静态文件 (like CSS) ,都是需要正确获取的。
就好比,这本书 https://chinanf-boy.github.io/mdBook-zh/, 那么 site-url
就是:
# book.toml
[output.html]
site-url = "/mdBook-zh/"
自定义 404 页面也是可以的,比如: src/404.md
。
当然,对应要配置下output.html.input-404
。