analytical estimation functions #271
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: 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'} | |
#- {os: macOS-latest, r: '4.3', pkgext: '.tgz'} | |
- {os: macOS-latest, r: '4.2', pkgext: '.tgz'} | |
- {os: macOS-latest, r: '4.1', pkgext: '.tgz'} | |
- {os: macOS-latest, r: '4.0', pkgext: '.tgz'} | |
# 2023-08-23 fails, not getting Reca. Because it is not built yet for windows and next or 4.3. | |
- {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"} | |
- {os: ubuntu-22.04, r: '4.2', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"} | |
# 4.1 is pushed to drat repo on merge to master for ubunutu (except pre-release builds), update script if 4.1 is taken out | |
- {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: Do autorelease increment, tagging, and environment setup | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
run: | | |
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: 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". | |
brew install gdal | |
shell: bash | |
- name: Prepare for dependencies on Linux | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get install libgdal-dev 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} | |
- name: Check | |
env: | |
_R_CHECK_CRAN_INCOMING_: false | |
run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "error", check_dir = "check") | |
shell: Rscript {0} | |
- name: Show testthat output | |
if: always() | |
run: find check -name 'testthat.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 | |
- name: Build package source archive | |
if: runner.os == 'Linux' && matrix.config.r == '4.1' && github.event_name == 'push' && github.ref == 'refs/heads/master' | |
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 | |
if: (runner.os == 'Windows' || runner.os == 'macOS') && github.event_name == 'push' && github.ref == 'refs/heads/master' | |
run: | | |
pkgbuild::build(".", dest_path = ".", binary = TRUE) | |
file.copy(Sys.getenv("PKG_FILE"), Sys.getenv("PKG_FREL")) | |
shell: Rscript {0} | |
# Upload to drat repo only for one version (4.1) 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: | |
- name: Upload to DRAT repo | |
if: ( (runner.os == 'Windows' && matrix.config.r != 'next') || (runner.os == 'macOS' && matrix.config.r != 'next') || (runner.os == 'Linux' && matrix.config.r == '4.1') ) && github.event_name == 'push' && github.ref == 'refs/heads/master' | |
env: | |
BUILD_NUMBER: ${{ github.sha }} | |
DRAT_DEPLOY_TOKEN: ${{ secrets.DRAT_DEPLOY_TOKEN }} | |
run: . repo_deploy.sh | |
shell: bash | |
- name: Upload to DRAT testingRepo | |
if: ( (runner.os == 'Windows' && matrix.config.r != 'next') || (runner.os == 'macOS' && matrix.config.r != 'next') || (runner.os == 'Linux' && matrix.config.r == '4.1') ) && github.event_name == 'push' && github.ref == 'refs/heads/master' | |
env: | |
BUILD_NUMBER: ${{ github.sha }} | |
DRAT_DEPLOY_TOKEN: ${{ secrets.DRAT_DEPLOY_TOKEN }} | |
run: . testingRepo_deploy.sh | |
shell: bash | |
- name: Create release and upload files | |
if: ( (runner.os == 'Windows' && matrix.config.r != 'next') || (runner.os == 'macOS' && matrix.config.r != 'next') || (runner.os == 'Linux' && matrix.config.r == '4.1') ) && github.event_name == 'push' && github.ref == 'refs/heads/master' | |
uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
commit: master | |
tag: ${{ env.FINAL_TAG }} | |
name: ${{ env.FINAL_TAG }} | |
artifacts: ${{ env.PKG_REPO }}/${{ env.PKG_FREL }} | |
token: ${{ secrets.GITHUB_TOKEN }} |