backends #1871
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 | |
# Need Ubuntu 20.04 for remotes::system_requirements() | |
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: ./.github/workflows/install | |
with: | |
install-r: false | |
cache-version: backends-${{ matrix.package }} | |
needs: check | |
extra-packages: "any::pkgbuild any::remotes decor ." | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Clone backend | |
run: | | |
make -C revdep-dev ${{ matrix.package }} | |
- name: Install system dependencies | |
if: runner.os == 'Linux' | |
# "22.04" fails here | |
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) | |
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 |