在持续集成中运行 mdbook

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

确保mdbook的构建与测试成功

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

  1. language: rust
  2. sudo: false
  3. cache:
  4. - cargo
  5. rust:
  6. - stable
  7. before_script:
  8. - (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
  9. - (test -x $HOME/.cargo/bin/mdbook || cargo install --vers "^0.3" mdbook)
  10. - cargo install-update -a
  11. script:
  12. - 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