Skip to content

Stox4adaptations

Stox4adaptations #283

Workflow file for this run

on:
push:
branches:
- master
- testing
- develop
pull_request:
branches:
- master
- testing
- develop
name: R-CMD-check
jobs:
R-CMD-check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
# We include 'next' in order to always test the latest patched release, but mac and Windows binaries are not deployed to the drat repo:
strategy:
fail-fast: false
matrix:
config:
# for windows and mac all builds are pushed to drat repo on merge to master (except pre-release builds), except 'next'
# 2023-08-23 fails, not getting Reca. Because it is not built yet for macos and next or 4.3.
- {os: macOS-latest, r: 'next', pkgext: '.tgz'} #tested without Reca
- {os: macOS-latest, r: '4.3', pkgext: '.tgz'} #tested without Reca
- {os: macOS-latest, r: '4.2', pkgext: '.tgz'}
- {os: macOS-latest, r: '4.1', pkgext: '.tgz'}
- {os: macOS-latest, r: '4.0', pkgext: '.tgz'}
- {os: windows-latest, r: 'next', pkgext: '.zip'}
- {os: windows-latest, r: '4.3', pkgext: '.zip'}
- {os: windows-latest, r: '4.2', pkgext: '.zip'}
- {os: windows-latest, r: '4.1', pkgext: '.zip'}
- {os: windows-latest, r: '4.0', pkgext: '.zip', rspm: "https://cloud.r-project.org"}
- {os: ubuntu-latest, r: 'next', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"}
# source is pushed to drat repos on merge to for ubunutu when r is 4.2 (source is the same for all R versions), update script if 4.2 is taken out
- {os: ubuntu-22.04, r: '4.3', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"}
- {os: ubuntu-22.04, r: '4.2', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"}
- {os: ubuntu-20.04, r: '4.1', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"}
- {os: ubuntu-20.04, r: '4.0', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"}
env:
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
RSPM: ${{ matrix.config.rspm }}
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v3
- name: Prepare for deployment at push
if: github.event_name == 'push'
run: |
curl "https://raw.githubusercontent.com/StoXProject/unstableRepo/main/scripts/checktag-actions.sh" --output unstableRepo_checktag.sh
curl "https://raw.githubusercontent.com/StoXProject/unstableRepo/main/scripts/deploy-actions.sh" --output unstableRepo_deploy.sh
chmod +x ./unstableRepo_checktag.sh ./unstableRepo_deploy.sh
. unstableRepo_checktag.sh
curl "https://raw.githubusercontent.com/StoXProject/testingRepo/main/scripts/checktag-actions.sh" --output testingRepo_checktag.sh
curl "https://raw.githubusercontent.com/StoXProject/testingRepo/main/scripts/deploy-actions.sh" --output testingRepo_deploy.sh
chmod +x ./testingRepo_checktag.sh ./testingRepo_deploy.sh
. testingRepo_checktag.sh
curl "https://raw.githubusercontent.com/StoXProject/repo/master/scripts/checktag-actions.sh" --output repo_checktag.sh
curl "https://raw.githubusercontent.com/StoXProject/repo/master/scripts/deploy-actions.sh" --output repo_deploy.sh
chmod +x ./repo_checktag.sh ./repo_deploy.sh
. repo_checktag.sh
echo "PRERELEASE=${PRERELEASE}" >> $GITHUB_ENV
echo "FINAL_TAG=${FINAL_TAG}" >> $GITHUB_ENV
echo "PKG_FILE_PREFIX=${PKG_FILE_PREFIX}" >> $GITHUB_ENV
echo "PKG_FILE=${PKG_FILE_PREFIX}${{ matrix.config.pkgext }}" >> $GITHUB_ENV
echo "PKG_FREL=${PKG_FILE_PREFIX}-R.${{ matrix.config.r }}-${{ runner.os }}${{ matrix.config.pkgext }}" >> $GITHUB_ENV
echo "PKG_REPO=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
shell: bash
- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
rtools-version: ${{ matrix.config.rtools }}
http-user-agent: ${{ matrix.config.http-user-agent }}
- name: Anticipate Bintray shutdown
if: runner.os == 'macOS'
run: |
brew update
shell: bash
- uses: r-lib/actions/setup-pandoc@v2
- name: Anticipate Bintray shutdown
if: runner.os == 'macOS'
run: |
brew update
shell: bash
- 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@v3
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 'writeLines(remotes::system_requirements("ubuntu", "20.04"))')
- name: Install MacOS dependencies
if: runner.os == 'macOS'
run: |
rm -f '/usr/local/bin/gfortran'
rm -f '/usr/local/bin/2to3'
rm -f '/usr/local/bin/2to3-3.11'
rm -f '/usr/local/bin/idle3'
rm -f '/usr/local/bin/idle3.11'
rm -f '/usr/local/bin/pydoc3'
rm -f '/usr/local/bin/pydoc3.11'
rm -f '/usr/local/bin/python3'
rm -f '/usr/local/bin/python3.11'
rm -f '/usr/local/bin/python3-config'
rm -f '/usr/local/bin/python3.11-config'
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=false # This prevents Homebrew from re-installing R, which will lead to .Platform$pkgType = "source".
shell: bash
- name: Prepare for dependencies on Linux
if: runner.os == 'Linux'
run: |
sudo apt-get install libproj-dev libgeos-dev libudunits2-dev
shell: bash
- name: Install dependencies on Linux
if: runner.os == 'Linux'
run: |
remotes::install_deps(dependencies = TRUE)
shell: Rscript {0}
- name: Install dependencies on Windows and macOS
if: runner.os != 'Linux'
run: |
# First try binary and then possibly source:
options(install.packages.check.source = "no")
remotes::install_deps(dependencies = TRUE, type = "binary")
installed <- utils::installed.packages()[, "Package"]
needed <- remotes::dev_package_deps()
missing <- setdiff(needed$package, installed)
if(length(missing)) {
message("Installing the following packages using default type:\n", paste0(missing, collapse = ", "))
utils::install.packages(missing, dependencies = TRUE)
}
shell: Rscript {0}
- name: Install CRANdependencies
run: |
remotes::install_cran("rcmdcheck")
#remotes::install_cran("git2r")
remotes::install_cran("drat")
remotes::install_cran("sessioninfo")
shell: Rscript {0}
- name: Session info
run: |
options(width = 100)
pkgs <- installed.packages()[, "Package"]
sessioninfo::session_info(pkgs, include_base = TRUE)
shell: Rscript {0}
# turn off testing of suggestions for configurations where Reca is not provided in StoX package repositories
- name: Check without suggest-dependencies
if: runner.os == 'macOS' && (matrix.config.r== 'next' || matrix.config.r== '4.3')
env:
_R_CHECK_CRAN_INCOMING_: false
_R_CHECK_FORCE_SUGGESTS_ : false
run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "error", check_dir = "check")
shell: Rscript {0}
- name: Check with suggest-dependencies
if: runner.os != 'macOS' || (matrix.config.r!= 'next' && matrix.config.r!= '4.3')
env:
_R_CHECK_CRAN_INCOMING_: false
_R_CHECK_FORCE_SUGGESTS_ : true
run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "error", check_dir = "check")
shell: Rscript {0}
- name: Show unit test output
if: always()
run: find check -name 'tinytest.Rout*' -exec cat '{}' \; || true
shell: bash
- name: Upload check results
if: failure()
uses: actions/upload-artifact@main
with:
name: ${{ runner.os }}-r${{ matrix.config.r }}-results
path: check
#######################################################
#### 4. Build the package source and binary files: ####
#######################################################
- name: Build package source archive from branches develop, testing and master
if: runner.os == 'Linux' && matrix.config.r == '4.2' && github.event_name == 'push' && (github.ref_name == 'master' || github.ref_name == 'testing' || github.ref_name == 'develop')
run: |
pkgbuild::build(".", dest_path = ".", binary = FALSE)
system(paste0("PKG_FREL=", Sys.getenv("PKG_FILE"), " >> ", Sys.getenv("GITHUB_ENV")))
shell: Rscript {0}
- name: Build package binary archive from branches develop, testing and master for Windows and macOS (this builds also on matrix.config.r = release, which can or can not be a duplicate)
if: (runner.os == 'Windows' || runner.os == 'macOS') && github.event_name == 'push' && (github.ref_name == 'master' || github.ref_name == 'testing' || github.ref_name == 'develop')
run: |
pkgbuild::build(".", dest_path = ".", binary = TRUE)
print("PKG_FILE")
print(Sys.getenv("PKG_FILE"))
print("PKG_FREL")
print(Sys.getenv("PKG_FREL"))
file.copy(Sys.getenv("PKG_FILE"), Sys.getenv("PKG_FREL"))
shell: Rscript {0}
######################################
#### 5. Deploy to the drat repos: ####
######################################
# Upload to drat repo only for one version (4.2) on Linux, and only for all the specifically given R versions for macOS and Windows (not next). Next is included to detect errors immediatelly when the new R is patched:
## 5a. Upload to the official (DRAT) repo, but only from the master branch.
- name: Upload to the official (DRAT) repo
if: ( (runner.os == 'Windows' && matrix.config.r != 'next') || (runner.os == 'macOS' && matrix.config.r != 'next') || (runner.os == 'Linux' && matrix.config.r == '4.2') ) && github.event_name == 'push' && github.ref_name == 'master'
env:
BUILD_NUMBER: ${{ github.sha }}
DRAT_DEPLOY_TOKEN: ${{ secrets.DRAT_DEPLOY_TOKEN }}
run: . repo_deploy.sh
shell: bash
## 5b. Upload to the (DRAT) testingRepo, but only from the testing branch.
- name: Upload to the testing (DRAT) repo
if: ( (runner.os == 'Windows' && matrix.config.r != 'next') || (runner.os == 'macOS' && matrix.config.r != 'next') || (runner.os == 'Linux' && matrix.config.r == '4.2') ) && github.event_name == 'push' && github.ref_name == 'testing'
env:
BUILD_NUMBER: ${{ github.sha }}
DRAT_DEPLOY_TOKEN: ${{ secrets.DRAT_DEPLOY_TOKEN }}
run: . testingRepo_deploy.sh
shell: bash
## 5c. Upload to the (DRAT) unstableRepo, but only from the develop branch.
- name: Upload to the unstable (DRAT) repo
if: ( (runner.os == 'Windows' && matrix.config.r != 'next') || (runner.os == 'macOS' && matrix.config.r != 'next') || (runner.os == 'Linux' && matrix.config.r == '4.2') ) && github.event_name == 'push' && github.ref_name == 'develop'
env:
BUILD_NUMBER: ${{ github.sha }}
DRAT_DEPLOY_TOKEN: ${{ secrets.DRAT_DEPLOY_TOKEN }}
run: . unstableRepo_deploy.sh
shell: bash