:triangular_flag_on_post::triangular_flag_on_post::triangular_flag_on_post: This repo is intended for internal use only. Sweeping changes will be made without notice. :triangular_flag_on_post::triangular_flag_on_post::triangular_flag_on_post:
A reusable workflow is a workflow that is defined in a single location but can be executed from another location as if it was locally defined. Link: https://docs.github.com/en/actions/learn-github-actions/reusing-workflows
This workflow below should be copied into your repo at .github/workflows/R-CMD-check.yaml
# Workflow derived from https://github.com/rstudio/shiny-workflows
#
# NOTE: This Shiny team GHA workflow is overkill for most R packages.
# For most R packages it is better to use https://github.com/r-lib/actions
on:
push:
branches: [main, rc-**]
pull_request:
branches: [main]
schedule:
- cron: '0 8 * * 1' # every monday
name: Package checks
jobs:
website:
uses: rstudio/shiny-workflows/.github/workflows/website.yaml@v1
routine:
uses: rstudio/shiny-workflows/.github/workflows/routine.yaml@v1
R-CMD-check:
uses: rstudio/shiny-workflows/.github/workflows/R-CMD-check.yaml@v1
Note: Adjust the
8
in the schedule to match the number of letters in the package name to insert some time variance. This helps mitigate PAT rate limits when testing many packages on a schedule.
There are three main reusable workflows to be used by packages in the shiny-verse
website.yaml
{pkgdown}
website and deploying it to the gh-pages
branch of the repo.DESCRIPTION
field Config/Needs/website
will also be installedextra-packages
: Installs extra packages not listed in the DESCRIPTION
file to be installed. Link: https://github.com/r-lib/actions/tree/v2/setup-r-dependenciescache-version
: The cache key to be used. Link: https://github.com/r-lib/actions/tree/v2/setup-r-dependenciespandoc-version
: Sets the pandoc version to be installed. Link: https://github.com/r-lib/actions/tree/HEAD/setup-pandoc . Defaults to 3.x
which installs a recent 3.x version of pandoc. (Similar behavior for 2.x
.)check-title
: If set, will disable rmarkdown
's check for having the vignette title and the document title matchroutine.yaml
rc-v**
branchesdevtools::document()
devtools::build_readme()
(if README.Rmd
exists)yarn build
and commits any changes in inst
, srcts
, and srcjs
.covr
if codecov.yml
exists.lintr
existsyarn test
staticimports
DESCRIPTION
field Config/Needs/routine
will also be installedextra-packages
, cache-version
, pandoc-version
: Same as in website.yaml
node-version
: Version of node.js
to installR-CMD-check.yaml
R CMD check .
on your packageextra-packages
, cache-version
, pandoc-version
: Same as in website.yaml
extra-check-args
: Arguments passed in addition to the default check args
of https://github.com/r-lib/actions/blob/v2/check-r-package/macOS
: macOS
runtime to use. Set to false
to disable testing on macOS.windows
: windows
runtime to use. Set to false
to disable testing on Windows.ubuntu
: ubuntu
runtime to use. To use more than one ubuntu value, send in a value separated by a space. For example, to test on ubuntu 18 and 20, use "ubuntu-18.04 ubuntu20.04"
. The first ubuntu
value will be tested using the "devel"
R version. Set to false
to disable testing on Ubuntu.staticimports
should display a warning message if the staticimports are out of date.minimum-r-version
will be created in the matrix. Great for dependencies that will not install on earlier R versions.false
, packages with a src
folder will not test on Windows R 3.6 using rtools35
.There are a set of known files that can be run. The file just needs to exist to be run. No extra configuration necessary.
The files must exist in the .github/shiny-workflows/
folder. Such as .github/shiny-workflows/package-install.R
.
Files:
package-install.R
/ package-install.sh
website.R
/ website.sh
website.yaml
before the site is builtroutine.R
/ routine.sh
routine.yaml
. Runs before the local commits are pushed back to GitHubR-CMD-check.yaml
These scripts should be done for their side effects, such as copying files or installing dependencies.
For example, a common use case for using a shell script over an R script would be to install custom system dependencies. Since installation is usually OperatingSystem specific, you'll likely want to make use of System environment variables, such as $RUNNER_OS
. Link: https://docs.github.com/en/actions/learn-github-actions/environment-variables
Example usage of package-install.sh
:
if [ "$RUNNER_OS" == "macOS" ]; then
brew install harfbuzz fribidi
fi
pkgdown
setupTypically when using pkgdown
in a package, you run the command below to initalize all necessary configs.
# Init pkgdown webs
usethis::use_pkgdown_github_pages()
However, we will need to remove the GHA workflow file created, as we will use the website.yaml
reusable shiny-workflow
.
# Remove pkgdown workflow file; (Using reusable shiny-workflow)
unlink(".github/workflows/pkgdown.yaml")
If your build fails and you are unsure of why, please visit https://github.com/r-lib/actions#where-to-find-help for more debugging tips. If you feel it is an error done by shiny-workflows
, please submit an issue: https://github.com/rstudio/shiny-workflows/issues/new
r-lib/actions
website
job in your workflow file. When the time comes that you can use the standardised {pkgdown}
workflow, feel free to uncomment the website
job.shiny-workflow
developmentReasons to consider a feature:
Reasons to NOT consider a feature:
package.json
If updates are made to the workflows, the v1
tag must be (forcefully) moved forward to the latest value within the rstudio/shiny-workflows
. To do this, run:
git tag -f v1
git push origin --tags -f
All examples in this repository are published with the CC0 license.