Skip to content

Commit

Permalink
Merge pull request #715 from fitzgen/continuous-integration-instructions
Browse files Browse the repository at this point in the history
user guide: Add instructions for running `mdbook` in CI
  • Loading branch information
steveklabnik authored Jul 3, 2018
2 parents 953d382 + 488ace1 commit 6287e6a
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions book-example/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
- [Editor](format/theme/editor.md)
- [MathJax Support](format/mathjax.md)
- [mdBook specific features](format/mdbook.md)
- [Continuous Integration](continuous-integration.md)
- [For Developers](for_developers/README.md)
- [Preprocessors](for_developers/preprocessors.md)
- [Alternate Backends](for_developers/backends.md)
Expand Down
55 changes: 55 additions & 0 deletions book-example/src/continuous-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 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.

First, create a new GitHub oauth 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.

Then, add this snippet to your `.travis.yml`:

```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!

0 comments on commit 6287e6a

Please sign in to comment.