-
Notifications
You must be signed in to change notification settings - Fork 31
144 lines (121 loc) · 4.58 KB
/
RCMD.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
name: R-CMD-check
jobs:
R-CMD-check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
strategy:
fail-fast: false
matrix:
config:
- {os: macOS-latest, r: 'release'}
- {os: windows-latest, r: 'release'}
- {os: ubuntu-20.04, r: 'release'}
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
RSPM: ${{ matrix.config.rspm }}
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
# macOS-specific steps
- name: Fix and Debug Homebrew Issues
if: runner.os == 'macOS'
run: |
# Reset Homebrew changes
cd /opt/homebrew/Library/Taps/homebrew/homebrew-core || exit 1
git stash -u || echo "No changes to stash"
git clean -d -f || echo "No files to clean"
# Fix Homebrew permissions
sudo chown -R $(whoami) $(brew --prefix)/*
# Debug Homebrew
brew doctor || echo "brew doctor failed"
brew config || echo "brew config failed"
- name: Install macOS Utilities
if: runner.os == 'macOS'
run: |
brew update || echo "Homebrew update failed"
brew install libomp || echo "libomp installation failed"
brew install qpdf || echo "qpdf installation failed but continuing"
export DYLD_LIBRARY_PATH=$(brew --prefix libomp)/lib
echo "DYLD_LIBRARY_PATH=$(brew --prefix libomp)/lib" >> $GITHUB_ENV
# Set up R environment
- uses: r-lib/actions/setup-r@v2-branch
with:
r-version: ${{ matrix.config.r }}
- uses: r-lib/actions/setup-pandoc@v2-branch
# Install Miniconda (all OS)
- uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: 3.9
miniconda-version: "latest"
- name: Install Conda Dependencies
run: |
conda config --add channels defaults
conda config --set solver classic
conda install -c conda-forge numpy
- name: Query R Dependencies
run: |
install.packages('remotes')
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
shell: Rscript {0}
# Cache R packages
- name: Cache R Packages
if: runner.os != 'Windows'
uses: actions/cache@v1
with:
path: ${{ env.R_LIBS_USER }}
key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-
# Install system dependencies (Linux only)
- name: Install System Dependencies
if: runner.os == 'Linux'
run: |
while read -r cmd; do
eval sudo $cmd
done < <(Rscript -e 'cat(remotes::system_requirements("ubuntu", "20.04"), sep = "\n")')
sudo apt install libharfbuzz-dev libfribidi-dev
# Install R dependencies
- name: Install R Dependencies
run: |
remotes::install_deps(dependencies = TRUE)
remotes::install_cran("rcmdcheck")
shell: Rscript {0}
# Fix Conda permissions (macOS only)
- name: Fix Conda Permissions
if: runner.os == 'macOS'
run: sudo chown -R $UID $CONDA
# Install and test "text" package
- name: Install and Test "text" Package
run: |
install.packages("devtools")
library(devtools)
devtools::install_github("oscarkjell/text")
text::textrpp_install(prompt = FALSE)
text::textrpp_initialize(textEmbed_test = TRUE)
shell: Rscript {0}
# Session Info
- name: Session Info
run: |
options(width = 100)
pkgs <- installed.packages()[, "Package"]
sessioninfo::session_info(pkgs, include_base = TRUE)
shell: Rscript {0}
# Run R CMD check
- name: R CMD Check
env:
_R_CHECK_CRAN_INCOMING_: false
OMP_MAX_ACTIVE_LEVELS: 0
run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check")
shell: Rscript {0}
# Display testthat output
- name: Display Testthat Output
if: always()
run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true
shell: bash