mirror of
				https://github.com/actions/cache.git
				synced 2025-11-04 13:29:10 +08:00 
			
		
		
		
	(R renv) Fix Renv package cache location in examples (#660)
* (R renv) Fix Renv package cache location in examples * (R env) Update getting Renv package cache location * (R env) Set renv package cache location using RENV_PATHS_ROOT environment variable
This commit is contained in:
		
							
								
								
									
										70
									
								
								examples.md
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								examples.md
									
									
									
									
									
								
							@@ -450,53 +450,35 @@ jobs:
 | 
			
		||||
 | 
			
		||||
## R - renv
 | 
			
		||||
 | 
			
		||||
For renv, the cache directory will vary by OS. Look at https://rstudio.github.io/renv/articles/renv.html#cache
 | 
			
		||||
 | 
			
		||||
Locations:
 | 
			
		||||
 | 
			
		||||
- Ubuntu: `~/.local/share/renv`
 | 
			
		||||
- macOS: `~/Library/Application Support/renv`
 | 
			
		||||
- Windows: `%LOCALAPPDATA%/renv`
 | 
			
		||||
 | 
			
		||||
### Simple example
 | 
			
		||||
For renv, the cache directory will vary by OS. The `RENV_PATHS_ROOT` environment variable is used to set the cache location. Have a look at https://rstudio.github.io/renv/reference/paths.html#details for more details.
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
- uses: actions/cache@v2
 | 
			
		||||
- name: Set RENV_PATHS_ROOT
 | 
			
		||||
  shell: bash
 | 
			
		||||
  run: |
 | 
			
		||||
    echo "RENV_PATHS_ROOT=${{ runner.temp }}/renv" >> $GITHUB_ENV
 | 
			
		||||
- name: Install and activate renv
 | 
			
		||||
  run: |
 | 
			
		||||
    install.packages("renv")
 | 
			
		||||
    renv::activate()
 | 
			
		||||
  shell: Rscript {0}
 | 
			
		||||
- name: Get R and OS version
 | 
			
		||||
  id: get-version
 | 
			
		||||
  run: |
 | 
			
		||||
    cat("##[set-output name=os-version;]", sessionInfo()$running, "\n", sep = "")
 | 
			
		||||
    cat("##[set-output name=r-version;]", R.Version()$version.string, sep = "")
 | 
			
		||||
  shell: Rscript {0}
 | 
			
		||||
- name: Get renv cache path
 | 
			
		||||
  id: get-renv-cache-path
 | 
			
		||||
  run: |
 | 
			
		||||
    cat("##[set-output name=renv-cache-path;]", renv::paths$cache(), sep = "")
 | 
			
		||||
  shell: Rscript {0}
 | 
			
		||||
- name: Restore Renv package cache
 | 
			
		||||
  uses: actions/cache@v2
 | 
			
		||||
  with:
 | 
			
		||||
    path: ~/.local/share/renv
 | 
			
		||||
    key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
 | 
			
		||||
    restore-keys: |
 | 
			
		||||
      ${{ runner.os }}-renv-
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Replace `~/.local/share/renv` with the correct `path` if not using Ubuntu.
 | 
			
		||||
 | 
			
		||||
### Multiple OS's in a workflow
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
- uses: actions/cache@v2
 | 
			
		||||
  if: startsWith(runner.os, 'Linux')
 | 
			
		||||
  with:
 | 
			
		||||
    path: ~/.local/share/renv
 | 
			
		||||
    key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
 | 
			
		||||
    restore-keys: |
 | 
			
		||||
      ${{ runner.os }}-renv-
 | 
			
		||||
 | 
			
		||||
- uses: actions/cache@v2
 | 
			
		||||
  if: startsWith(runner.os, 'macOS')
 | 
			
		||||
  with:
 | 
			
		||||
    path: ~/Library/Application Support/renv
 | 
			
		||||
    key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
 | 
			
		||||
    restore-keys: |
 | 
			
		||||
      ${{ runner.os }}-renv-
 | 
			
		||||
 | 
			
		||||
- uses: actions/cache@v2
 | 
			
		||||
  if: startsWith(runner.os, 'Windows')
 | 
			
		||||
  with:
 | 
			
		||||
    path: ~\AppData\Local\renv
 | 
			
		||||
    key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
 | 
			
		||||
    restore-keys: |
 | 
			
		||||
      ${{ runner.os }}-renv-
 | 
			
		||||
    path: ${{ env.RENV_PATHS_ROOT }}
 | 
			
		||||
    key: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{ inputs.cache-version }}-${{ hashFiles('renv.lock') }}
 | 
			
		||||
    restore-keys: ${{ steps.get-version.outputs.os-version }}-${{ steps.get-version.outputs.r-version }}-${{inputs.cache-version }}-
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Ruby - Bundler
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user