Skip to content

* Note that we need --vanilla to bypass the renv activation/boostrap … #253

* Note that we need --vanilla to bypass the renv activation/boostrap …

* Note that we need --vanilla to bypass the renv activation/boostrap … #253

Workflow file for this run

# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
# Name of the workflow => usethis::use_github_actions_badge("CI-CD-renv")
name: CI-CD-renv
on:
# Triggered on push and pull request events
push:
pull_request:
# Allow manual runs from the Actions tab
workflow_dispatch:
# Monthly runs on the 1st day of the month at midnight
# (specific for ShinyCICD maintenance)
schedule:
- cron: '0 0 1 * *'
jobs:
CI-CD:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
strategy:
# We keep a matrix for convenience, but we would typically just run on one
# single OS and R version, aligned with the target deployment environment
matrix:
config:
- {os: ubuntu-latest, r: 'release'}
env:
# Access token for GitHub
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
# Preserve package sources for informative references in case of errors
R_KEEP_PKG_SOURCE: yes
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Setup R
uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
# No RStudio Package Manager to respect renv.lock
use-public-rspm: false
- name: Install system dependencies
# This is not taken care of (yet) by r-lib/actions/setup-renv
# We need the development version of remotes to support Ubuntu 22.04 and
# for querying system requirements for multiple pkgs (r-lib/remotes#665)
# We use Rscript --vanilla to bypass the renv activation/boostrap
# We could use pak-based installation for renv, which includes system
# requirements, but would have to handle the pak cache explicitly
# See https://github.com/r-lib/actions/issues/785
run: |
Rscript --vanilla -e "install.packages(c('remotes', 'distro', 'jsonlite'))"
Rscript --vanilla -e "remotes::install_github('r-lib/remotes')"
while read -r cmd
do
eval sudo $cmd
done < <(Rscript --vanilla -e 'writeLines(with(distro::distro(), remotes::system_requirements(id, short_version, package = names(jsonlite::read_json("renv.lock")$Packages))))')
- name: Activate renv and restore packages with cache
uses: r-lib/actions/setup-renv@v2
- name: Install R CMD check
run: install.packages("rcmdcheck")
shell: Rscript {0}
- name: Check package
uses: r-lib/actions/check-r-package@v2
- name: Deploy to shinyapps.io
# Continuous deployment only for pushes to the main / master branch
if: true || (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
env:
SHINYAPPS_ACCOUNT: ${{ secrets.SHINYAPPS_ACCOUNT }}
SHINYAPPS_TOKEN: ${{ secrets.SHINYAPPS_TOKEN }}
SHINYAPPS_SECRET: ${{ secrets.SHINYAPPS_SECRET }}
run: Rscript deploy/deploy-shinyapps.R