From 2590cf3895632033534372357c1deee713152a62 Mon Sep 17 00:00:00 2001 From: Winston Chang Date: Mon, 28 Dec 2020 12:28:38 -0600 Subject: [PATCH] Drop GHA pr-commands and add GHA Rituals. Use pak to install (#3230) Co-authored-by: Winston Chang Co-authored-by: Barret Schloerke --- .github/workflows/R-CMD-check.yaml | 129 ++++++++-------------------- .github/workflows/pr-commands.yaml | 35 -------- .github/workflows/rituals.yaml | 130 +++++++++++++++++++++++++++++ .gitignore | 3 + DESCRIPTION | 1 - 5 files changed, 166 insertions(+), 132 deletions(-) delete mode 100644 .github/workflows/pr-commands.yaml create mode 100644 .github/workflows/rituals.yaml diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 3fcf89f056..46ec288b28 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -45,37 +45,52 @@ jobs: - uses: actions/checkout@v2 - uses: r-lib/actions/setup-r@master + id: install-r with: r-version: ${{ matrix.config.r }} - uses: r-lib/actions/setup-pandoc@master - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) + - name: Install pak and query dependencies shell: Rscript {0} + run: | + install.packages("pak", repos = "https://r-lib.github.io/p/pak/dev/") + saveRDS(pak::pkg_deps_tree("local::.", dependencies = TRUE), ".github/r-depends.rds") - name: Cache R packages - uses: actions/cache@v1 + uses: actions/cache@v2 with: path: ${{ env.R_LIBS_USER }} - key: ${{ matrix.config.os }}-r-${{ matrix.config.r }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ matrix.config.os }}-r-${{ matrix.config.r }}-1- + key: ${{ matrix.config.os }}-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} + restore-keys: ${{ matrix.config.os }}-${{ steps.install-r.outputs.installed-r-version }}-1- - name: Install system dependencies if: runner.os == 'Linux' - env: - RHUB_PLATFORM: linux-x86_64-ubuntu-gcc + shell: Rscript {0} run: | - Rscript -e "remotes::install_github('r-hub/sysreqs')" - sysreqs=$(Rscript -e "cat(sysreqs::sysreq_commands('DESCRIPTION'))") - sudo -s eval "$sysreqs" + pak::local_system_requirements(execute = TRUE) + + # xquartz and cairo are needed for Cairo package. + # harfbuzz and fribidi are needed for textshaping package. + - name: Mac systemdeps + if: runner.os == 'macOS' + run: | + brew cask install xquartz + brew install cairo + brew install harfbuzz fribidi + + # Use a shorter temp directory for pak installations, due to filename + # length issues on Windows. https://github.com/r-lib/pak/issues/252 + - name: Windows temp dir + if: runner.os == 'Windows' + run: | + New-Item -Path "C:\" -Name "tmp" -ItemType Directory + echo "TMPDIR=c:\tmp" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append - name: Install dependencies run: | - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("rcmdcheck") + pak::local_install_dev_deps(upgrade = TRUE) + pak::pkg_install("rcmdcheck") shell: Rscript {0} - name: Find PhantomJS path @@ -83,11 +98,11 @@ jobs: run: | echo "::set-output name=path::$(Rscript -e 'cat(shinytest:::phantom_paths()[[1]])')" - name: Cache PhantomJS - uses: actions/cache@v1 + uses: actions/cache@v2 with: path: ${{ steps.phantomjs.outputs.path }} - key: ${{ runner.os }}-phantomjs - restore-keys: ${{ runner.os }}-phantomjs + key: ${{ matrix.config.os }}-phantomjs + restore-keys: ${{ matrix.config.os }}-phantomjs - name: Install PhantomJS run: > Rscript @@ -115,7 +130,7 @@ jobs: if: failure() uses: actions/upload-artifact@v2 with: - name: ${{ runner.os }}-r${{ matrix.config.r }}-results + name: ${{ matrix.config.os }}-r${{ matrix.config.r }}-results path: check - name: Fix path for Windows caching @@ -125,81 +140,3 @@ jobs: # we'll just set the path so that the original tar that would be # found, will be found. run: echo "C:/Program Files/Git/usr/bin" >> $GITHUB_PATH - - - documentation: - runs-on: ${{ matrix.config.os }} - name: documentation - - strategy: - fail-fast: false - matrix: - config: - - {os: macOS-latest, r: '4.0'} - - env: - R_REMOTES_NO_ERRORS_FROM_WARNINGS: true - GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - - steps: - - uses: actions/checkout@v2 - - - uses: r-lib/actions/setup-r@master - with: - r-version: ${{ matrix.config.r }} - - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - shell: Rscript {0} - - name: Cache R packages - uses: actions/cache@v1 - with: - path: ${{ env.R_LIBS_USER }} - key: ${{ matrix.config.os }}-r-${{ matrix.config.r }}-2-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ matrix.config.os }}-r-${{ matrix.config.r }}-2- - - name: Remove dependencies file - run: | - rm .github/depends.Rds - - - name: Install dependencies - run: | - install.packages(c("remotes")) - remotes::install_deps(dependencies = TRUE) - remotes::install_cran("devtools") - remotes::install_cran("rprojroot") - shell: Rscript {0} - - - name: Check documentation - run: | - ./tools/documentation/checkDocsCurrent.sh - - - node_js: - runs-on: macOS-latest - name: node_js - - steps: - - uses: actions/checkout@v2 - - - uses: actions/setup-node@v1 - with: - node-version: '12.x' - - # https://github.com/actions/cache/blame/ccf96194800dbb7b7094edcd5a7cf3ec3c270f10/examples.md#L185-L200 - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "::set-output name=dir::$(yarn cache dir)" - - name: yarn cache - uses: actions/cache@v1 - id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) - with: - path: ${{ steps.yarn-cache-dir-path.outputs.dir }} - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Check node build - run: | - ./tools/checkJSCurrent.sh diff --git a/.github/workflows/pr-commands.yaml b/.github/workflows/pr-commands.yaml deleted file mode 100644 index 2ed46bdb9b..0000000000 --- a/.github/workflows/pr-commands.yaml +++ /dev/null @@ -1,35 +0,0 @@ -on: - issue_comment: - types: [created] -name: Commands -jobs: - document: - if: startsWith(github.event.comment.body, '/document') - name: document - runs-on: macOS-latest - env: - GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - steps: - - uses: actions/checkout@v2 - - uses: r-lib/actions/pr-fetch@master - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - uses: r-lib/actions/setup-r@master - - name: Install dependencies - run: Rscript -e 'install.packages(c("remotes", "roxygen2"))' -e 'remotes::install_deps(dependencies = TRUE)' - - name: Document - run: Rscript -e 'roxygen2::roxygenise()' - - name: commit - run: | - git add man/\* NAMESPACE - git commit -m 'Document' - - uses: r-lib/actions/pr-push@master - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - # added so that the workflow doesn't fail. - always_runner: - runs-on: ubuntu-latest - steps: - - name: Always run - run: echo "This job is used to prevent the workflow status from showing as failed when all other jobs are skipped" diff --git a/.github/workflows/rituals.yaml b/.github/workflows/rituals.yaml new file mode 100644 index 0000000000..547066f98f --- /dev/null +++ b/.github/workflows/rituals.yaml @@ -0,0 +1,130 @@ +on: + push: + branches: + - master + - ghactions + pull_request: + branches: + - master + +name: Rituals + +jobs: + rituals: + name: Rituals + # if: false + runs-on: ${{ matrix.config.os }} + + + strategy: + fail-fast: false + matrix: + config: + - { os: ubuntu-16.04, r: '4.0', rspm: "https://packagemanager.rstudio.com/all/__linux__/xenial/latest"} + + env: + R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + RSPM: ${{ matrix.config.rspm }} + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v1 + + - uses: r-lib/actions/pr-fetch@master + name: Git Pull (PR) + if: github.event_name == 'pull_request' + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - uses: r-lib/actions/setup-r@master + id: install-r + with: + r-version: ${{ matrix.config.r }} + + - uses: r-lib/actions/setup-pandoc@master + + - name: Git Config + run: | + git config user.name "${GITHUB_ACTOR}" + git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" + + - name: Install pak and query dependencies + shell: Rscript {0} + run: | + install.packages("pak", repos = "https://r-lib.github.io/p/pak/dev/") + saveRDS(pak::pkg_deps_tree("local::.", dependencies = TRUE), ".github/r-depends.rds") + + - name: Cache R packages + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ matrix.config.os }}-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} + restore-keys: ${{ matrix.config.os }}-${{ steps.install-r.outputs.installed-r-version }}-1- + + - name: Install system dependencies + # if: runner.os == 'Linux' + shell: Rscript {0} + run: | + pak::local_system_requirements(execute = TRUE) + + - name: Install dependencies + shell: Rscript {0} + run: | + pak::local_install_dev_deps(upgrade = TRUE) + pak::pkg_install("sessioninfo") + pak::pkg_install("devtools") + + - name: Session info + shell: Rscript {0} + run: | + options(width = 100) + pkgs <- installed.packages()[, "Package"] + sessioninfo::session_info(pkgs, include_base = TRUE) + + - name: Document + run: | + Rscript -e 'devtools::document()' + git add man/\* NAMESPACE + git commit -m 'Document (GitHub Actions)' || echo "No documentation changes to commit" + + - name: Check documentation + run: | + ./tools/documentation/checkDocsCurrent.sh + + - uses: actions/setup-node@v1 + with: + node-version: '12.x' + # https://github.com/actions/cache/blame/ccf96194800dbb7b7094edcd5a7cf3ec3c270f10/examples.md#L185-L200 + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + - name: yarn cache + uses: actions/cache@v2 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ matrix.config.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ matrix.config.os }}-yarn- + - name: Build JS + run: | + cd tools + yarn install --frozen-lockfile + yarn build + git add ../inst + git commit -m 'yarn build (GitHub Actions)' || echo "No yarn changes to commit" + + - name: Check node build + run: | + ./tools/checkJSCurrent.sh + + + - name: Git Push (PR) + uses: r-lib/actions/pr-push@master + if: github.event_name == 'pull_request' + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Git Push (MASTER) + if: github.event_name == 'push' + run: | + git push https://${{github.actor}}:${{secrets.GITHUB_TOKEN}}@github.com/${{github.repository}}.git HEAD:${{ github.ref }} || echo "No changes to push" diff --git a/.gitignore b/.gitignore index 2ebe2acaa0..c85f3132f3 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,6 @@ shinyapps/ README.html .*.Rnb.cached tools/yarn-error.log + +# GHA remotes installation +.github/r-depends.rds diff --git a/DESCRIPTION b/DESCRIPTION index b7d4de7e5b..abd4629edb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -119,7 +119,6 @@ Remotes: rstudio/promises, rstudio/sass, rstudio/bslib, - rstudio/webdriver, rstudio/shinytest, r-lib/cachem URL: http://shiny.rstudio.com