---
title: "FAQ"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{FAQ}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
## Authentication
#### Q-Auth-1
I am getting an error when using `circle::use_circle_deploy()` or `tic::use_ghactions_deploy()`.
**Answer**
In most cases this is related to API authentication issues.
Ensure that the following points are met:
1. For Circle CI, install the respective GitHub App from the [GitHub Marketplace](https://github.com/marketplace).
2. Ensure that you have set the respective API keys for the problematic provider in your `.Renviron` file.
Consult the help pages of the respective `use_*_deploy()` function for more help.
- GitHub Actions: A `GITHUB_PAT` with "public_repo" scopes.
- Circle CI: Env var `R_CIRCLE`.
## GitHub Actions
#### Q-GHA-1
How is {tic} different from what [r-lib/actions](https://github.com/r-lib/actions) does?
**Answer**
{tic} uses [r-lib/actions](https://github.com/r-lib/actions) as the base to install R in the first place.
However in detail, {tic} does the following things differently which aim to enhance the CI experience:
- Caching: {tic} caches the whole R library rather than only the direct dependencies of a package.
This has the advantage that packages required for side actions ({pkgdown} deployment, README updates) will also be cached.
- `ccache`: {tic} comes with a compiler cache for source installations of packages by default, speeding up repeated source installation highly.
The compiler cache directory (`.ccache`) will also be cached (once a week).
Example use case: If you installed {Rcpp} from source as a dependency of your package and have it stored in your cache and {Rcpp} now updates two days later, the reinstallation will make use of the compiler cache and install {Rcpp} instantly rather than recompiling the C code again.
- Number of CPUs: {tic} uses 4 CPUs by default instead of only 1 as [r-lib/actions](https://github.com/r-lib/actions) does.
This speeds up package installation a lot.
4 CPUs are max because all GitHub Actions runners have 2 hyperthreading cores available.
- Use of SSH deployment keys: Once set up via `tic::use_ghactions_deploy()`, this deployment approach makes it possible to push any file of your repository to any branch of your remote.
Other deployment approaches often limit you to only push to `gh-pages` branch or similar.
## Other
#### Q-Other-1
Is it possible to update the CI YAML templates installed by {tic} with upstream changes?
**Answer**
Yes! Have a look at ["Updating Templates"](https://docs.ropensci.org/tic/articles/updating.html) for more information.
---
#### Q-Other-2
Am I the only one using {tic}?
**Answer**
You can see who and how many people use {tic.R} on GitHub via this query: https://github.com/search?p=5&q=filename%3Atic.R&type=Code
---
#### Q-Other-3
Package {rgl} fails to install because of either
- "configure: error: X11 not found but required, configure aborted."
- "error: X11 not found; XQuartz (from www.xquartz.org) is required to run rgl."
**Answer**
The first one is usually caused by a missing installation of `XQuartz` on macOS.
Add `brew install xquartz` to the runner.
The second error requires to set the `DISPLAY` env var to mimic a non-headless state.
Add `export DISPLAY=:99` to the stage in which {rgl} should be installed.
If the warning message during loading of {rgl} should be suppressed, either env var `RGL_USE_NULL = TRUE` can be set or R option `options(rgl.useNull = TRUE)`.