backends #1488
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: | |
- main | |
- master | |
pull_request: | |
branches: | |
- main | |
- master | |
schedule: | |
- cron: '0 8 * * *' | |
name: backends | |
jobs: | |
matrix: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- uses: actions/checkout@v3 | |
# https://github.blog/changelog/2020-04-15-github-actions-new-workflow-features/ | |
- id: set-matrix | |
run: | | |
matrix=$(( | |
echo '{ "package" : [' | |
sed -n "/^REVDEP *:= */ { s///; p }" revdep-dev/Makefile | sed -r 's/ odbc-[^ ]*//g' | sed 's/ /,\n/g' | sed -r 's/^([^,]*)(,?)$/"\1"\2/' | |
echo " ]}" | |
) | jq -c .) | |
echo $matrix | |
echo $matrix | jq . | |
echo "matrix=$matrix" >> $GITHUB_OUTPUT | |
check-matrix: | |
runs-on: ubuntu-latest | |
needs: matrix | |
steps: | |
- name: Install json2yaml | |
run: | | |
sudo npm install -g json2yaml | |
- name: Check matrix definition | |
run: | | |
matrix='${{ needs.matrix.outputs.matrix }}' | |
echo $matrix | |
echo $matrix | jq . | |
echo $matrix | json2yaml | |
backend: | |
needs: matrix | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: ${{fromJson(needs.matrix.outputs.matrix)}} | |
name: ${{ matrix.package }} | |
env: | |
RSPM: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" | |
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Check rate limits | |
run: | | |
curl -s --header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/rate_limit | |
shell: bash | |
- uses: actions/checkout@v3 | |
- uses: r-lib/actions/setup-r@v2 | |
- name: Install remotes | |
run: | | |
if (!requireNamespace("curl", quietly = TRUE)) install.packages("curl") | |
if (!requireNamespace("remotes", quietly = TRUE)) install.packages("remotes") | |
shell: Rscript {0} | |
- name: Clone backend | |
run: | | |
make -C revdep-dev ${{ matrix.package }} | |
- name: Prepare cache keys | |
if: runner.os != 'Windows' | |
run: | | |
saveRDS(remotes::dev_package_deps("revdep-dev/${{ matrix.package }}", dependencies = TRUE, type = .Platform$pkgType), ".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: backends-${{ hashFiles('.github/R-version') }}-2-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: backends-${{ hashFiles('.github/R-version') }}-2- | |
- 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", path = "revdep-dev/${{ matrix.package }}"))') | |
- name: Install package and dependencies | |
run: | | |
remotes::install_local("revdep-dev/${{ matrix.package }}", dependencies = TRUE, type = .Platform$pkgType) | |
remotes::install_local(".", type = .Platform$pkgType, force = TRUE) | |
remotes::install_cran("pkgbuild") | |
shell: Rscript {0} | |
- name: Session info | |
run: | | |
options(width = 100) | |
if (!requireNamespace("sessioninfo", quietly = TRUE)) install.packages("sessioninfo") | |
pkgs <- installed.packages()[, "Package"] | |
sessioninfo::session_info(pkgs, include_base = TRUE) | |
shell: Rscript {0} | |
# Begin custom: after install | |
# Must happen after installing system dependencies, | |
# https://github.com/ankane/setup-mariadb/issues/2 | |
- uses: ankane/setup-mariadb@v1 | |
if: matrix.package == 'RMariaDB' | |
with: | |
mariadb-version: 10.9 | |
- name: Create database, set it to UTF-8 | |
if: matrix.package == 'RMariaDB' | |
run: | | |
mysql -e "CREATE DATABASE IF NOT EXISTS test; ALTER DATABASE test CHARACTER SET 'utf8'; FLUSH PRIVILEGES;" | |
- uses: ankane/setup-postgres@v1 | |
if: matrix.package == 'RPostgres' | |
with: | |
postgres-version: 13 | |
- name: Create database | |
if: (runner.os != 'Windows') && (matrix.package == 'RPostgres') | |
run: | | |
createdb ${USER} | |
- name: Create database | |
if: (runner.os == 'Windows') && (matrix.package == 'RPostgres') | |
run: | | |
createdb ${USERNAME} | |
shell: bash | |
# End custom: after install | |
- name: Test backend | |
run: | | |
make -C revdep-dev test-${{ matrix.package }} | |
- name: Upload check results | |
if: failure() | |
uses: actions/upload-artifact@main | |
with: | |
name: ${{ runner.os }}-r${{ matrix.config.r }}-results | |
path: revdep-dev/${{ matrix.package }} | |
- name: Check rate limits | |
if: always() | |
run: | | |
curl -s --header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/rate_limit | |
shell: bash |