Version 2.1.2-9001, see NEWS.md. #717
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 | ||
- testing | ||
- develop | ||
pull_request: | ||
branches: | ||
- master | ||
- testing | ||
- develop | ||
name: R-CMD-check | ||
jobs: | ||
R-CMD-check: | ||
# 0. Define the systems to run on: | ||
runs-on: ${{ matrix.config.os }} | ||
name: ${{ matrix.config.os }} (${{ matrix.config.r }}) | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
config: | ||
# Latest macOS will use the big-sur-arm64 folder when deploying to the drat repo: | ||
- {os: macOS-latest, r: 'release', pkgext: '.tgz'} | ||
- {os: macOS-latest, r: 'oldrel', pkgext: '.tgz'} | ||
# macOS-13 will use the big-sur-x86_64 folder when deploying to the drat repo: | ||
- {os: macOS-13, r: 'release', pkgext: '.tgz'} | ||
- {os: macOS-13, r: 'oldrel', pkgext: '.tgz'} | ||
- {os: windows-latest, r: 'release', pkgext: '.zip'} | ||
- {os: windows-latest, r: 'oldrel', pkgext: '.zip'} | ||
# ubuntu-latest is 24 as of 2024-10-31. Should we use it? | ||
- {os: ubuntu-22.04, r: 'release', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"} | ||
- {os: ubuntu-22.04, r: 'oldrel', pkgext: '.tar.gz', rspm: "https://cloud.r-project.org"} | ||
- {os: ubuntu-22.04, r: 'oldrel-1', 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: | ||
################### | ||
#### 1. Setup: #### | ||
################### | ||
- uses: actions/checkout@v4 | ||
- 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 }} | ||
- uses: r-lib/actions/setup-pandoc@v2 | ||
############################################################################# | ||
#### 2. R package installation (with system and R package dependencies): #### | ||
############################################################################# | ||
## 2a. Cache R packages: | ||
#- name: Query R package dependencies | ||
# run: | | ||
# install.packages('remotes') | ||
# saveRDS(remotes::dev_package_deps(dependencies = TRUE), "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: ${{ env.cache-version }}-${{ runner.os }}-r-${{ matrix.config.r }}-${{ hashFiles('depends.Rds') }} | ||
# restore-keys: ${{ env.cache-version }}-${{ runner.os }}-r-${{ matrix.config.r }}- | ||
## 2b. System dependencies: | ||
- name: Install system dependencies on macOS | ||
if: runner.os == 'macOS' | ||
run: | | ||
# gfortran may not exist in a period after a new R minor release: | ||
gfortranFile='/usr/local/bin/gfortran' | ||
if [ -f "$gfortranFile" ] ; then | ||
rm "$gfortranFile" | ||
fi | ||
rm '/usr/local/bin/2to3' | ||
rm '/usr/local/bin/2to3-3.11' | ||
rm '/usr/local/bin/idle3.11' | ||
rm '/usr/local/bin/idle3' | ||
rm '/usr/local/bin/pydoc3' | ||
rm '/usr/local/bin/python3' | ||
rm '/usr/local/bin/python3-config' | ||
rm '/usr/local/bin/pydoc3.11' | ||
rm '/usr/local/bin/python3.11' | ||
rm '/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 udunits | ||
shell: bash | ||
- name: Prepare for CRANdependencies on Linux | ||
if: runner.os == 'Linux' | ||
run: | | ||
sudo apt-get install -y libcurl4-openssl-dev | ||
sudo apt-get install -y libudunits2-dev | ||
shell: bash | ||
## 2c. R packages needed for this yaml script (not related to the Rstox package itself): | ||
- name: Install CRANdependencies | ||
run: | | ||
install.packages(c("rcmdcheck", "git2r", "sessioninfo", "knitr", "remotes", "drat")) | ||
shell: Rscript {0} | ||
## 2d. Install dependencies: | ||
- name: Install R package dependencies | ||
run: | | ||
remotes::install_deps(dependencies = TRUE, repos = "https://cloud.r-project.org/") | ||
shell: Rscript {0} | ||
## 2e. Session info: | ||
- name: Session info | ||
run: | | ||
options(width = 100) | ||
pkgs <- installed.packages()[, "Package"] | ||
sessioninfo::session_info(pkgs, include_base = TRUE) | ||
shell: Rscript {0} | ||
##################################### | ||
#### 3. Check the Rstox package: #### | ||
##################################### | ||
- name: Check | ||
env: | ||
_R_CHECK_CRAN_INCOMING_: false | ||
run: rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning", check_dir = "check") | ||
shell: Rscript {0} | ||
- 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 (on Linux for some reason) | ||
if: runner.os == 'Linux' && matrix.config.r == 'release' && 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 | ||
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: #### | ||
###################################### | ||
## 5a. Upload to the official (DRAT) repo, but only from the master branch: | ||
- name: Upload to the official (DRAT) repo | ||
if: ( (runner.os == 'Windows') || (runner.os == 'macOS') || (runner.os == 'Linux' && matrix.config.r == 'release') ) && 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') || (runner.os == 'macOS') || (runner.os == 'Linux' && matrix.config.r == 'release') ) && 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') || (runner.os == 'macOS') || (runner.os == 'Linux' && matrix.config.r == 'release') ) && 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 | ||
############################### | ||
#### 6. Release on GitHub: #### | ||
############################### | ||
- name: Create release on GitHub and upload files for testing branch | ||
if: ( (runner.os == 'Windows') || (runner.os == 'macOS') || (runner.os == 'Linux' && matrix.config.r == 'release') ) && github.event_name == 'push' && github.ref_name == 'testing' | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
allowUpdates: true | ||
commit: testing | ||
tag: ${{ env.FINAL_TAG }} | ||
name: ${{ env.FINAL_TAG }} | ||
artifacts: ${{ env.PKG_REPO }}/${{ env.PKG_FREL }} | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Create release on GitHub and upload files for master branch | ||
if: ( (runner.os == 'Windows') || (runner.os == 'macOS') || (runner.os == 'Linux' && matrix.config.r == 'release') ) && github.event_name == 'push' && github.ref_name == '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 }} |