Skip to content

Explicit handling of pak package cache for pak-enabled renv #213

Explicit handling of pak package cache for pak-enabled renv

Explicit handling of pak package cache for pak-enabled renv #213

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
# Enable pak-based installation for renv (including system requirements)
RENV_CONFIG_PAK_ENABLED: TRUE
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
# Handling the pak package cache for pak-enabled renv is not taken care of (yet)
# by r-lib/actions/setup-renv (or renv itself)
- name: Configure pak package cache
id: pak-cache
run: |
# Package cache used by pak
cat("R_PKG_CACHE_DIR=${{ runner.temp }}/pkgcache\n", file = Sys.getenv("GITHUB_ENV"), append = TRUE)
cache_version = 1
cat("os-version=", sessionInfo()$running, "\n", file = Sys.getenv("GITHUB_OUTPUT"), sep = "", append = TRUE)
cat("r-version=", R.Version()$version.string, "\n", file = Sys.getenv("GITHUB_OUTPUT"), sep = "", append = TRUE)
cat("cache-version=", cache_version, file = Sys.getenv("GITHUB_OUTPUT"), sep = "", append = TRUE)
shell: Rscript {0}
- name: Restore pak package cache
uses: actions/cache@v3
with:
path: ${{ env.R_PKG_CACHE_DIR }}
key: pak-${{ steps.pak-cache.outputs.os-version }}-${{ steps.pak-cache.outputs.r-version }}-${{ steps.pak-cache.outputs.cache-version }}-${{ hashFiles('renv.lock') }}
restore-keys: pak-${{ steps.pak-cache.outputs.os-version }}-${{ steps.pak-cache.outputs.r-version }}-${{ steps.pak-cache.outputs.cache-version }}-
- 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