首页 > 解决方案 > 缓存 GitHub Actions R 包或以其他方式加速安装?

问题描述

我整理了一个 Github Actions Workflow,它将 R 和 R 包安装到运行器,然后在 Github 存储库上运行单元测试。

该过程目前有效,但相对较慢,工作流程需要 4 到 8 分钟,其中大部分时间用于安装 R 包。我想知道我是否正在使用我的 Github Action 做一些次优的事情,可以改进以加快整个工作流程。特别是,我想知道我是否可以缓存 R 或 R 包安装以加快进程,但我还没有看到很多关于它如何工作的信息——大多数关于使用 Github Actions 进行缓存的讨论都与其他语言,例如 npm。

有没有人有任何想法?

name: Run R Tests
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - uses: r-lib/actions/setup-r@v1
      with:
        r-version: '3.5.3' # The R version to download (if necessary) and use.
    - name: Install Packages
      run: Rscript -e 'install.packages(c("readr", "magrittr", "testthat", "here"))'
    - name: Get current directory
      run: pwd
    - name: Run testthat
      run: Rscript './run_tests.R'

标签: rgithubgithub-actions

解决方案


“这一切都取决于”你想做什么,但我在这篇文章下面的几篇文章中描述了我的设置你可能需要稍微滚动一下旧文章)。最近的一个给出了很好的概述和介绍,并有一个视频。

下面的更多帖子详细说明了 RSPM 和 BSPM(我的默认设置)。我满足于主要只在 Linux 上运行(有时在 macOS 上),但我的最小测试时间是每个包不到两分钟,因为我严重依赖于快速可靠安装的预制.deb二进制文件。在简单的情况下,它也可以使用 macOS 的默认操作(但是当源代码需要 Fortran 编译器等时,我看到 macOS 失败;我只是跳过了那里的 macOS 构建)。

我使用的东西(并在r-ci 网站上提供)的一个附带好处是,如果一个人选择(或被迫)再次迁移,就像我们中的许多人从 Travis 到 GitHub Actions 所做的那样,它在其他 CI 提供商的工作方式相同.


推荐阅读