deploy_site_github() sets up your SSH keys for deployment, builds the site with build_site(), commits the site to the gh-pages branch and then pushes the results back to GitHub. deploy_site_github() is meant only to be used by the CI system on Travis, it should not be called locally. deploy_to_branch() can be used to deploy a site directly to GitHub Pages locally. See 'Setup' for details on setting up your repository to use this.

  pkg = ".",
  install = TRUE,
  tarball = Sys.getenv("PKG_TARBALL", ""),
  ssh_id = Sys.getenv("id_rsa", ""),
  commit_message = construct_commit_message(pkg),
  clean = FALSE,
  verbose = FALSE,
  host = "",
  repo_slug = Sys.getenv("TRAVIS_REPO_SLUG", "")



Path to package.


Optionally, opt-out of automatic installation. This is necessary if the package you're documenting is a dependency of pkgdown


The location of the built package tarball. The default Travis configuration for R packages sets PKG_TARBALL to this path.


The private id to use, a base64 encoded content of the private pem file. This should not be your personal private key. Instead create a new keypair specifically for deploying the site. The easiest way is to use travis::use_travis_deploy().


The commit message to be used for the commit.


Clean all files from old site.


Print verbose output


The GitHub host url.


Additional arguments passed to build_site().


The user/repo slug for the repository.


For a quick setup, you can use usethis::use_pkgdown_travis(). It will help you with the following detailed steps.

  • Add the following to your .travis.yml file.

    before_cache: Rscript -e 'remotes::install_cran("pkgdown")'
      provider: script
      script: Rscript -e 'pkgdown::deploy_site_github()'
      skip_cleanup: true
  • Then you will need to setup your deployment keys. The easiest way is to call travis::use_travis_deploy(). This will generate and push the necessary keys to your GitHub and Travis accounts. See the travis package website for more details.

  • Next, make sure that a gh-pages branch exists. The simplest way to do so is to run the following git commands locally:

    git checkout --orphan gh-pages
    git rm -rf .
    git commit --allow-empty -m 'Initial gh-pages commit'
    git push origin gh-pages
    git checkout master

    We recommend doing this outside of RStudio (with the project closed) as from RStudio's perspective you end up deleting all the files and then re-creating them.

  • If you're using a custom CNAME, make sure you have set the url in _pkgdown.yaml: