在持续集成中运行 mdbook

虽然以下示例中使用在Travis CI,但原则上应该,也可以直接转移到其他持续集成提供商.

确保mdbook的构建与测试成功

以下是Travis CI的.travis.yml示例,确保配置了mdbook build和mdbook test运行成功。加快CI运转时间的关键是缓存mdbook的安装,以便您可以不用每次CI运行就编译一次mdbook。

1. language: rust
2. sudo: false

4. cache:
5. - cargo

7. rust:
8. - stable

10. before_script:
11. - (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
12. - (test -x $HOME/.cargo/bin/mdbook || cargo install --vers "^0.3" mdbook)
13. - cargo install-update -a

15. script:
16. - mdbook build path/to/mybook && mdbook test path/to/mybook

发布你的图书到 GitHub Pages

遵循这些命令的结果是,在您的存储库运行CI成功后,您的图书将发布到GitHub页面的master分支.

首先,创建一个新的GitHub的”Personal Access Token”,保证”public_repo”权限(或私有存储库的”repo”)。转到Travis CI网站的该库设置页面,并添加一个名为GITHUB_TOKEN的环境变量,该变量能保证安全和不显示在日志中.

然后,将此代码段附加到您的.travis.yml,并更新为book目录路径:

book目录是mdbook build的默认输出目录,请根据你的构建目录填写

1. deploy:
2. provider: pages
3. skip-cleanup: true
4. github-token: $GITHUB_TOKEN
5. local-dir: path/to/mybook/book
6. keep-history: false
7. on:
8. branch: master

就这样!

手动发布你的图书到 Github Pages

如果你的 CI 并不支持 GitHub pages, 或是与其他平台进行整合: 注意: 不要求一定是 tmp 目录:

1. $> git worktree add /tmp/book gh-pages
2. $> mdbook build
3. $> rm -rf /tmp/book/* # this won't delete the .git directory
4. $> cp -rp book/* /tmp/book/
5. $> cd /tmp/book
6. $> git add -A
7. $> git commit 'new book message'
8. $> git push origin gh-pages
9. $> cd -

或是放入 Makefile 文件:

1. .PHONY: deploy
2. deploy: book
3. @echo "====> deploying to github"
4. git worktree add /tmp/book gh-pages
5. rm -rf /tmp/book/*
6. cp -rp book/* /tmp/book/
7. cd /tmp/book && \
8. git add -A && \
9. git commit -m "deployed on $(shell date) by ${USER}" && \
10. git push origin gh-pages