2018-06-23 01:30:06 +08:00
|
|
|
# Running `mdbook` in Continuous Integration
|
|
|
|
|
|
|
|
While the following examples use Travis CI, their principles should
|
|
|
|
straightforwardly transfer to other continuous integration providers as well.
|
|
|
|
|
|
|
|
## Ensuring Your Book Builds and Tests Pass
|
|
|
|
|
|
|
|
Here is a sample Travis CI `.travis.yml` configuration that ensures `mdbook
|
|
|
|
build` and `mdbook test` run successfully. The key to fast CI turnaround times
|
|
|
|
is caching `mdbook` installs, so that you aren't compiling `mdbook` on every CI
|
|
|
|
run.
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
language: rust
|
|
|
|
sudo: false
|
|
|
|
|
|
|
|
cache:
|
|
|
|
- cargo
|
|
|
|
|
|
|
|
rust:
|
|
|
|
- stable
|
|
|
|
|
|
|
|
before_script:
|
|
|
|
- (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
|
|
|
|
- (test -x $HOME/.cargo/bin/mdbook || cargo install --vers "^0.1" mdbook)
|
|
|
|
- cargo install-update -a
|
|
|
|
|
|
|
|
script:
|
|
|
|
- cd path/to/mybook && mdbook build && mdbook test
|
|
|
|
```
|
|
|
|
|
|
|
|
## Deploying Your Book to GitHub Pages
|
|
|
|
|
|
|
|
Following these instructions will result in your book being published to GitHub
|
|
|
|
pages after a successful CI run on your repository's `master` branch.
|
|
|
|
|
2018-08-03 10:34:26 +08:00
|
|
|
First, create a new GitHub "Personal Access Token" with the "public_repo"
|
|
|
|
permissions (or "repo" for private repositories). Go to your repository's Travis
|
|
|
|
CI settings page and add an environment variable named `GITHUB_TOKEN` that is
|
|
|
|
marked secure and *not* shown in the logs.
|
2018-06-23 01:30:06 +08:00
|
|
|
|
2018-08-03 10:34:26 +08:00
|
|
|
Then, append this snippet to your `.travis.yml` and update the path to the
|
|
|
|
`book` directory:
|
2018-06-23 01:30:06 +08:00
|
|
|
|
|
|
|
```yaml
|
|
|
|
deploy:
|
|
|
|
provider: pages
|
|
|
|
skip-cleanup: true
|
|
|
|
github-token: $GITHUB_TOKEN
|
|
|
|
local-dir: path/to/mybook/book
|
|
|
|
keep-history: false
|
|
|
|
on:
|
|
|
|
branch: master
|
|
|
|
```
|
|
|
|
|
|
|
|
That's it!
|