trying to adapt codecov for three OSs. #138
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
name: CODECOV | |
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 }} | |
CODECOV_DEBUG: true | |
steps: | |
- uses: actions/checkout@v2 | |
# Install libomp via Homebrew for macOS | |
- name: Install libomp on macOS | |
if: runner.os == 'macOS' | |
run: | | |
brew install libomp | |
# Set DYLD_LIBRARY_PATH on macOS | |
- name: Set DYLD_LIBRARY_PATH for libomp on macOS | |
if: runner.os == 'macOS' | |
run: | | |
echo "DYLD_LIBRARY_PATH=$(brew --prefix libomp)/lib" >> $GITHUB_ENV | |
shell: bash | |
- uses: r-lib/actions/setup-r@v2-branch | |
with: | |
r-version: ${{ matrix.config.r }} | |
http-user-agent: ${{ matrix.config.http-user-agent }} | |
- uses: r-lib/actions/setup-pandoc@v2-branch | |
- uses: conda-incubator/setup-miniconda@v3 | |
with: | |
auto-update-conda: true | |
python-version: 3.9 | |
miniconda-version: "latest" | |
- name: Query 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} | |
- name: Cache R packages | |
if: runner.os != 'Windows' | |
uses: actions/cache@v4 | |
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- | |
- 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 | |
sudo apt install libfribidi-dev | |
- name: Install dependencies | |
run: | | |
remotes::install_deps(dependencies = TRUE) | |
remotes::install_cran("rcmdcheck") | |
shell: Rscript {0} | |
- name: Fix Conda permissions on macOS (SUDO) | |
if: runner.os == 'macOS' | |
run: sudo chown -R $UID $CONDA | |
- name: Installing text and testing it | |
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} | |
- name: Session info | |
run: | | |
options(width = 100) | |
pkgs <- installed.packages()[, "Package"] | |
sessioninfo::session_info(pkgs, include_base = TRUE) | |
shell: Rscript {0} | |
# Ensure OMP_MAX_ACTIVE_LEVELS is set to avoid OpenMP issues | |
- name: Test coverage | |
env: | |
OMP_MAX_ACTIVE_LEVELS: 2 | |
run: covr::codecov() | |
shell: Rscript {0} | |
# Wait to ensure all coverage data is saved | |
- name: Wait for coverage files to be ready | |
run: sleep 5 | |
# Upload coverage to Codecov using Codecov Action for each OS with flags | |
- name: Upload coverage to Codecov (macOS) | |
if: runner.os == 'macOS' | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: macos | |
verbose: true | |
- name: Upload coverage to Codecov (Windows) | |
if: runner.os == 'Windows' | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: windows | |
verbose: true | |
- name: Upload coverage to Codecov (Ubuntu) | |
if: runner.os == 'Linux' | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: ubuntu | |
verbose: true |