Skip to content

Commit

Permalink
Adds updated workflows for testing and releasing (#3)
Browse files Browse the repository at this point in the history
* Adds updated workflows for testing and releasing

* Adds junit as reporter

* Extends the test reporting

* Updated test flow with unittests

* Dynamic grab package name

* fixing pkg name extract

* .

* fix typo

* more typoes

* Merged rebase

* Trying to get github pages working (#10)

* Add dummy function to import data.table for unit-tests. Probably a cleaner waer way to do this

* Fix broken unit test in QA vignette

* Update results data model vignette

* Fix R CMD checks

* Try to get website deployed

* Test if using usethis::use_pkgdown_github_pages() worked

* Updating pkgdown yaml to try and get it to publish

* Trying to get github pages working

* Fixes end-of-file-fixer to exclude snaps

* Setup package-check and release with workflow_call to allow dispatches from other pipes

* Various end of file fixing

* disable pii leaks check - still does gitleaks

* Setup shared pre-commit hooks

* Add remaining files for sharing pre-commits

* Updated snapshot due to new sorting

---------

Co-authored-by: Henrik Sparre Spiegelhauer (HSPU) <hspu@novonordisk.com>
Co-authored-by: Matthew Phelps <ma.phelps@gmail.com>
  • Loading branch information
3 people authored Mar 20, 2024
1 parent 9c7247e commit fad2f96
Show file tree
Hide file tree
Showing 18 changed files with 483 additions and 198 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ on:
pull_request:
branches: [main, stage, dev]
workflow_dispatch:
workflow_call:

name: Check
name: Check Package 📦

jobs:
audit:
Expand All @@ -19,7 +20,7 @@ jobs:
name: License Check 🃏
uses: insightsengineering/r.pkg.template/.github/workflows/licenses.yaml@main

check-reuse:
check:
name: RMD check 📦
uses: ./.github/workflows/R-CMD-check.yaml

Expand All @@ -31,17 +32,8 @@ jobs:
name: gitleaks 💧
uses: insightsengineering/r.pkg.template/.github/workflows/gitleaks.yaml@main
with:
check-for-pii: true

vbump:
name: Version Bump 🤜🤛
if: github.event_name == 'push' && github.ref != 'refs/heads/main'
uses: insightsengineering/r.pkg.template/.github/workflows/version-bump.yaml@main
secrets:
REPO_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# roxygen:
# name: Roxygen 📦
# uses: ./.github/workflows/Roxygen.yaml
check-for-pii: false #Currently fails on R packages (not that the test check fails, but that the test fails to run.)




3 changes: 3 additions & 0 deletions .github/workflows/R-CMD-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@ jobs:
- uses: r-lib/actions/check-r-package@v2
with:
upload-snapshots: true
error-on: '"error"'
check-dir: '"check"'
upload-results: true
23 changes: 23 additions & 0 deletions .github/workflows/Release-package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
on:
push:
branches: main
pull_request:
branches: main
workflow_dispatch:
workflow_call:

name: Release Package 🚀

jobs:
build:
name: RMD Build and check
uses: ./.github/workflows/R-CMD-check.yaml
docs:
needs: build
name: Build and Deploy Docs
uses: ./.github/workflows/pkgdown.yaml
release:
needs: [build, docs]
name: Release
if: github.event_name != 'pull_request'
uses: ./.github/workflows/release.yaml
87 changes: 76 additions & 11 deletions .github/workflows/Test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ on:

name: test-coverage

# concurrency:
# group: roxygen-${{ github.event.pull_request.number || github.ref }}
# cancel-in-progress: true
permissions:
contents: read
pull-requests: write
checks: write

jobs:
test-coverage:
Expand All @@ -24,28 +25,92 @@ jobs:

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::covr
extra-packages: |
any::covr
any::xml2
any::dplyr
any::knitr
needs: coverage

- name: Test coverage
- name: Get package name
run: |
echo "PKGNAME=$(awk -F: '/Package:/{gsub(/[ ]+/,""); print $2}' DESCRIPTION)" >> $GITHUB_ENV
shell: bash

- name: debug
run: |
echo $PKGNAME
shell: bash

- name: Run tests with coverage
run: |
covr::codecov(
quiet = FALSE,
clean = FALSE,
install_path = file.path(Sys.getenv("RUNNER_TEMP"), "package")
)
type = "none",
code = "testthat::test_package(
Sys.getenv('PKGNAME'),
reporter = testthat::JunitReporter$new(file = file.path(normalizePath(Sys.getenv('GITHUB_WORKSPACE'), winslash = '/'), 'test-results.xml'))
)",
install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package"),
clean=FALSE,
quiet=FALSE
)
shell: Rscript {0}

- name: Show testthat output
- name: Show testthat output in console
if: always()
run: |
## --------------------------------------------------------------------
find ${{ runner.temp }}/package -name 'testthat.Rout*' -exec cat '{}' \; || true
find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true
shell: bash

- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: |
test-results.xml
- name: Upload test results
if: failure()
uses: actions/upload-artifact@v4
with:
name: coverage-test-failures
path: ${{ runner.temp }}/package

- name: Create Coverage Report for comment
run: |
covr::package_coverage() |>
covr::to_cobertura(filename = "cobertura.xml")
xml <- xml2::read_xml("cobertura.xml")
pkg_cov <- xml |>
xml2::xml_find_first("packages/package") |>
xml2::xml_attrs() |>
dplyr::bind_rows()
fnc_cov <- xml |>
xml2::xml_find_first("packages/package") |>
xml2::xml_find_all("classes/class") |>
xml2::xml_attrs() |>
lapply(dplyr::bind_rows)
res <- list(pkg_cov, fnc_cov) |>
dplyr::bind_rows() |>
dplyr::transmute(
Name = dplyr::coalesce(filename, name),
`Coverage (%)` = round(as.numeric(`line-rate`)*100, digits = 2)
) |>
knitr::kable()
c("# Code coverage", res) |>
writeLines(con = "coverage.md")
shell: Rscript {0}

- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: github.event_name == 'pull_request'
with:
recreate: true
header: coverage
path: coverage.md
22 changes: 22 additions & 0 deletions .github/workflows/fast-forward.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Fast Forward PR
on:
issue_comment:
types: [created]

jobs:
fast_forward_job:
name: Fast Forward
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/fast-forward')
runs-on: ubuntu-latest
steps:
# To use this repository's private action, you must check out the repository
- name: Checkout
uses: actions/checkout@v2
# Basic use case example
- name: Fast Forward PR
id: ff-action
uses: endre-spotlab/fast-forward-js-action@2.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
success_message: 'Success! Fast forwarded ***target_base*** to ***source_head***! ```git checkout target_base && git merge source_head --ff-only``` '
failure_message: 'Failed! Cannot do fast forward! - try merging the target back into source first.'
135 changes: 87 additions & 48 deletions .github/workflows/pkgdown.yaml
Original file line number Diff line number Diff line change
@@ -1,49 +1,88 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
push:
branches: [main, master]
pull_request:
branches: [main, master, dev]
release:
types: [published]
workflow_dispatch:

name: pkgdown

jobs:
pkgdown:
runs-on: ubuntu-latest
# Only restrict concurrency for non-PR jobs
concurrency:
group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }}
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: write
steps:
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-pandoc@v2

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::pkgdown, local::.
needs: website

- name: Build site
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)
shell: Rscript {0}

- name: Deploy to GitHub pages 🚀
if: github.event_name != 'pull_request'
uses: JamesIves/github-pages-deploy-action@v4.5.0
with:
clean: false
branch: gh-pages
folder: docs
# Workflow adjusted from usethis::use_pkgdown_github_pages() to also publish pages from PRs in a subfolder

on:
# push:
# branches: [main, master]
# pull_request:
# branches: [main, master]
# release:
# types: [published]
workflow_dispatch:
workflow_call:

permissions:
contents: write
pull-requests: write

name: pkgdown

jobs:
pkgdown:
runs-on: ubuntu-latest
# Only restrict concurrency for non-PR jobs
concurrency:
group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }}
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4

- uses: r-lib/actions/setup-pandoc@v2

- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::pkgdown, local::.
needs: website

- name: Build site
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)
shell: Rscript {0}

# If not pull request a brand new webpage is deployed

- name: Deploy to GitHub pages 🚀
if: github.event_name != 'pull_request'
uses: JamesIves/github-pages-deploy-action@v4.5.0
with:
clean: false
branch: gh-pages
folder: docs

# If pull request the webpage is deployed inside a dev/"PR number" folder for review

- name: Add pkgdown PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: github.event_name == 'pull_request'
with:
recreate: true
header: pkgdown
message: |
# Github pages
Review the pkgdown webpage for the PR [here](https://${{ github.repository_owner }}.github.io/${{ github.event.repository.name }}/dev/${{ github.event.pull_request.number }})
- name: Copy page to temp folder
if: github.event_name == 'pull_request'
run: |
mkdir -p /home/runner/work/dev
cp -r ./docs/* /home/runner/work/dev
- name: Check out gh-pages branch
if: github.event_name == 'pull_request'
uses: actions/checkout@v4
with:
ref: gh-pages

- name: Copy and push to gh-pages
if: github.event_name == 'pull_request'
run: |
mkdir -p dev/${{ github.event.pull_request.number }}
cp -r /home/runner/work/dev/* ./dev/${{ github.event.pull_request.number }}
git config --global user.email "actions-robot@novonordisk.com"
git config --global user.name "Actions Robot From Github Actions"
git add .
git commit -m "Update gh pages from the PR"
git push
Loading

0 comments on commit fad2f96

Please sign in to comment.