Skip to content

Commit

Permalink
Add release workflow. (#4)
Browse files Browse the repository at this point in the history
* Updates to workflow and add pkgdown

* Fixed documentation and typo in readme

* Draft of release pipeline and renaming of check to seperate main and supporting workflows

* Increment version number to 0.1.0

* updated NEWS.md
  • Loading branch information
HenrikSpiegel authored Mar 11, 2024
1 parent 085e0b6 commit 38d9683
Show file tree
Hide file tree
Showing 14 changed files with 305 additions and 671 deletions.
5 changes: 5 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,9 @@ setImgSrc.js
^docs$
^pkgdown$
^README\.Rmd$
^README\.html$
^LICENSE\.md$
^\.pre-commit-config\.yaml
\.githooks
\.github
RELEASE_BODY\.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,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 @@ -37,11 +37,10 @@ jobs:
name: Version Bump 🤜🤛
if: github.event_name == 'push' && github.ref != 'refs/heads/main'
uses: insightsengineering/r.pkg.template/.github/workflows/version-bump.yaml@main
with:
disable-precommit-autoupdate: true
secrets:
REPO_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# roxygen:
# name: Roxygen 📦
# uses: ./.github/workflows/Roxygen.yaml


20 changes: 20 additions & 0 deletions .github/workflows/Release-package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
on:
push:
branches: main
pull_request:
branches: main
workflow_dispatch:

name: release

jobs:
build:
name: RMD Build and check
uses: ./.github/workflows/R-CMD-check.yaml
docs:
name: Build and Deploy Docs
uses: ./.github/workflows/pkgdown.yaml
release:
name: Release
if: github.event_name == 'push'
uses: ./.github/workflows/release.yaml
54 changes: 48 additions & 6 deletions .github/workflows/Test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ on:

name: test-coverage

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

jobs:
test-coverage:
Expand All @@ -24,23 +24,27 @@ 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
run: |
covr::codecov(
quiet = FALSE,
clean = FALSE,
install_path = file.path(Sys.getenv("RUNNER_TEMP"), "package")
install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package")
)
shell: Rscript {0}

- name: Show testthat output
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: Upload test results
Expand All @@ -49,3 +53,41 @@ jobs:
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
44 changes: 22 additions & 22 deletions .github/workflows/fast-forward.yaml
Original file line number Diff line number Diff line change
@@ -1,22 +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.'
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.'
88 changes: 88 additions & 0 deletions .github/workflows/pkgdown.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# 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
81 changes: 81 additions & 0 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
name: Release 🚀

on:
workflow_call:
inputs:
create-dev-releases:
description: 'Create dev releases'
required: false
default: false
type: boolean
is-pre-release:
description: 'Mark as pre-release'
required: false
default: true
type: boolean
workflow_dispatch:

concurrency:
group: release-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
release:
name: Release 🚀
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Setup token 🔑
id: github-token
run: |
if [ "${{ secrets.REPO_GITHUB_TOKEN }}" == "" ]; then
echo "REPO_GITHUB_TOKEN is empty. Substituting it with GITHUB_TOKEN."
echo "token=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_OUTPUT
else
echo "Using REPO_GITHUB_TOKEN."
echo "token=${{ secrets.REPO_GITHUB_TOKEN }}" >> $GITHUB_OUTPUT
fi
shell: bash

- name: Checkout repo 🛎
uses: actions/checkout@v4

- name: Get branch names 🌿
id: branch-name
uses: tj-actions/branch-names@v7

- name: Check if running with dev tag 🏷️
id: dev-tag
run: |
echo "Current tag: ${{ steps.branch-name.outputs.tag }}"
current_tag="${{ steps.branch-name.outputs.tag }}"
if [ "$(echo "$current_tag" | grep -E "^v([0-9]+\.)?([0-9]+\.)?([0-9]+)(-[0-9]+)$")" != "" ]; then
echo "Running for rc-tag."
echo "is-dev-tag=true" >> $GITHUB_OUTPUT
else
echo "is-dev-tag=false" >> $GITHUB_OUTPUT
fi
shell: bash

- name: Generate Changelog 📜
run: |
RELEASE_VERSION=$(awk -F: '/Version:/{gsub(/[ ]+/,"") ; print $2}' DESCRIPTION)
REPOSITORY_NAME="${{ github.event.repository.name }}"
(awk "/^#+.*${REPOSITORY_NAME//./\.}.*${RELEASE_VERSION//./\.}$/{flag=1;next}/^#+.*${REPOSITORY_NAME//./\.}.*/{flag=0}flag" NEWS.md | grep -v "^$" || echo "* ${RELEASE_VERSION}") > RELEASE_BODY.txt
- name: Create release 🌟
if: >-
steps.dev-tag.outputs.is-rc-tag == 'false' ||
inputs.create-dev-releases == true
# https://github.com/softprops/action-gh-release/pull/406#issuecomment-1934635958
uses: softprops/action-gh-release@4634c16e79c963813287e889244c50009e7f0981
with:
body_path: RELEASE_BODY.txt
token: ${{ steps.github-token.outputs.token }}
generate_release_notes: true
files: |
LICENSE
LICENSE.md
prerelease: inputs.pre-release
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ docs
inst/doc
.Rhistory
**/debug
**/*.html
README.html
RELEASE_BODY.txt
3 changes: 2 additions & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: chefStats
Title: Provide methods for different statistics
Version: 0.0.0.9001
Version: 0.1.0
Authors@R:
c(person(given = "MEWP (Matthew Phelps)",
role = "aut",
Expand Down Expand Up @@ -48,3 +48,4 @@ Remotes:
hta-pharma/chef
Config/testthat/edition: 3
VignetteBuilder: knitr
Config/testthat/parallel: true
4 changes: 4 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# chefStats 0.1.0
- Initial release of chefstats
- Contains an initial selection of statistical functions for use in the {ramnog} ecosystem.

2 changes: 1 addition & 1 deletion README.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ This project supports two styles of githooks.

1. The first style is to use the githooks provided in the `.githooks` directory. To use these hooks, run the following command in the root of the project:
- These hooks are very simple just blocking the commit to protected branches.
``
```
git config --local core.hooksPath .githooks/
```

Expand Down
Loading

0 comments on commit 38d9683

Please sign in to comment.