pengowen123
pengowen123

Reputation: 1007

Rustdoc on gh-pages with Travis

I have generated documentation for my project with cargo doc, and it is made in the target/doc directory. I want to allow users to view this documentation without a local copy, but I cannot figure out how to push this documentation to the gh-pages branch of the repository. Travis CI would help me automatically do this, but I cannot get it to work either. I followed this guide, and set up a .travis.yml file and a deploy.sh script. According to the build logs, everything goes fine but the gh-pages branch never gets updated. My operating system is Windows 7.

Upvotes: 2

Views: 489

Answers (1)

Vladimir Matveev
Vladimir Matveev

Reputation: 127711

It is better to use travis-cargo, which is intended to simplify deploying docs and which also has other features. Its readme provides an example of .travis.yml file, although in the simplest form it could look like this:

language: rust
sudo: false

rust:
  - nightly
  - beta
  - stable

before_script:
  - pip install 'travis-cargo<0.2' --user && export PATH=$HOME/.local/bin:$PATH

script:
  - |
      travis-cargo build &&
      travis-cargo test &&
      travis-cargo --only beta doc

after_success:
  - travis-cargo --only beta doc-upload

# needed to forbid travis-cargo to pass `--feature nightly` when building with nightly compiler
env:
  global:
    - TRAVIS_CARGO_NIGHTLY_FEATURE=""

It is very self-descriptive, so it is obvious, for example, what to do if you want to use another Rust release train for building docs.

In order for the above .travis.yml to work, you need to set your GH_TOKEN somehow. There are basically two ways to do it: inside .travis.yml via an encrypted string, or by configuring it in the Travis itself, in project options. I prefer the latter way, so I don't need to install travis command line tool or pollute my .travis.yml (and so the above config file does not contain secure option), but you may choose otherwise.

Upvotes: 4

Related Questions