do_pkgdown() builds and optionally deploys a pkgdown site and adds default steps to the "install", "before_deploy" and "deploy" stages:

  1. step_install_deps() in the "install" stage, using the repos argument.

  2. step_session_info() in the "install" stage.

  3. step_setup_ssh() in the "before_deploy" to setup the upcoming deployment (if deploy is set and only on GitHub Actions),

  4. step_setup_push_deploy() in the "before_deploy" stage (if deploy is set),

  5. step_build_pkgdown() in the "deploy" stage, forwarding all ... arguments.

  6. step_do_push_deploy() in the "deploy" stage.

By default, the docs/ directory is deployed to the gh-pages branch, keeping the history.

  deploy = NULL,
  orphan = FALSE,
  checkout = TRUE,
  repos = repo_default(),
  path = "docs",
  branch = "gh-pages",
  remote_url = NULL,
  commit_message = NULL,
  commit_paths = ".",
  force = FALSE,
  private_key_name = "TIC_DEPLOY_KEY"



Passed on to step_build_pkgdown()


If TRUE, deployment setup is performed before building the pkgdown site, and the site is deployed after building it. Set to FALSE to skip deployment. By default (if deploy is NULL), deployment happens if the following conditions are met:

  1. The repo can be pushed to (see ci_can_push()). account for old default "id_rsa"

  2. The branch argument is NULL (i.e., if the deployment happens to the active branch), or the current branch is thge default branch (usually "master") (see ci_get_branch()).


Create and force-push an orphan branch consisting of only one commit? This can be useful e.g. for path = "docs", branch = "gh-pages", but cannot be applied for pushing to the current branch.


Check out the current contents of the repository? Defaults to TRUE, set to FALSE if the build process relies on existing contents or if you deploy to a different branch.


CRAN-like repositories to install from, defaults to repo_default().

path, branch

By default, this macro deploys the docs directory to the gh-pages branch. This is different from step_push_deploy().


The URL of the remote Git repository to push to, defaults to the current GitHub repository.


Commit message to use, defaults to a useful message linking to the CI build and avoiding recursive CI runs.


Restrict the set of directories and/or files added to Git before deploying. Default: deploy all files.


Add --force flag to git commands?


Only needed when deploying from builds on GitHub Actions. If you have set a custom name for the private key during creation of the SSH key pair via tic::use_ghactions_deploy()] or use_tic(), pass this name here.

See also


if (FALSE) { dsl_init() do_pkgdown() dsl_get() }