KevCaz's Website

This is another note about deploying a pkgdown1 website with Travis on gh-pages. I had previously used the package travis but I was recently interested in doing so manually. Fortunately, I found this very helpful walk-through by Gábor Csárdi2. I used it and it worked well for a while, but at some point I had an issue with the deployment part (still not sure why), so I changed it. Instead of using the following config3

1
2
3
4
5
6
deploy:
  provider: script
  script: Rscript -e 'pkgdown::deploy_site_github()'
  skip_cleanup: true
  on:
    all_branches: true

I now use

1
2
3
4
5
6
7
8
deploy:
  provider: pages
  skip_cleanup: true
  keep_history: true
  github_token: $GITHUB_TOKEN
  on:
    all_branches: master
  local_dir: docs

where the environment variable $GITHUB_TOKEN is a token created on GitHub that I have added in the Travis settings of my package. This works well, BUT it does not allow to keep the two versions of the pkgdown website (development + release). This is because a new ./docs folder is produced during every build and when its content is pushed to the gh-pages branch, only one version of the website is pushed. To overcome this, I have used (and this thread was quite helpful).

1
2
3
4
after_success:
  - mkdir docs
  - git fetch origin gh-pages:gh-pages
  - git --work-tree=docs checkout gh-pages -- .

Briefly:

  1. mkdir docs creates the directory docs;
  2. git fetch origin gh-pages:gh-pages gets the remote gh-pages branch;
  3. git --work-tree=docs checkout gh-pages -- . put the content of gh-pages in ./docs.

If you want to see this config in action, it is currently used for inSilecoMisc and so both the release website and the development website are available!


  1. a static website builder for R packages. ↩︎

  2. an important I don’t mention here is actually to create the gh-pages branch↩︎

  3. par ot the .travis.yaml of my package. ↩︎