Skip to content

Fix deployment with updated renv/rsconnect #269

Fix deployment with updated renv/rsconnect

Fix deployment with updated renv/rsconnect #269

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 newer Ubuntu and
# for querying system requirements for multiple pkgs (r-lib/remotes#665)
# 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
# Note: We deactivate renv explicitly (setup-renv below will reactivate)
run: |
Rscript -e "if (Sys.getenv('RENV_PROJECT') != '') renv::deactivate()"
Rscript -e "install.packages(c('remotes', 'distro', 'jsonlite'))"
Rscript -e "remotes::install_github('r-lib/remotes')"
SYSTEM_REQUIREMENTS='with(distro::distro(), remotes::system_requirements(id, short_version, package = names(jsonlite::read_json("renv.lock")$Packages)))'
while read -r cmd; do echo sudo $cmd && eval sudo $cmd
done < <(Rscript -e "writeLines($SYSTEM_REQUIREMENTS)")
- 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: startsWith(github.ref, 'refs/heads/') || (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