Skip to content

Commit

Permalink
Release workflow improvements (#106)
Browse files Browse the repository at this point in the history
### Changes
* Added version check in `release.yaml` workflow. 
* Added custom `run-name` based on the provided version number in
`release.yaml`
* Set all common workflows to call `usmapdata` workflows.

### Notes
* If the provided version is lower than the current, the workflow will
fail.
* Workflow re-use via `workflow_call` will allow for workflows to be
updated for both `usmap` and `usmapdata` simultaneously.
* `usmapdata` will be where the full workflow scripts are stored,
reflecting the dependency `usmap` has on `usmapdata` for R code.

closes #105
  • Loading branch information
pdil authored Mar 31, 2024
2 parents eb7018e + eeb8959 commit 2628aa0
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 201 deletions.
7 changes: 7 additions & 0 deletions .github/workflow-resources/release-version-check.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# assumes $INPUT_VERSION is set to the selected release version
CURRENT_VERSION=$(echo "$(cat DESCRIPTION)" | grep "Version:" | awk '{print $2}')

if [ "$(printf '%s\n' "$INPUT_VERSION" "$CURRENT_VERSION" | sort -V | head -n1)" = "$INPUT_VERSION" ]; then
echo "::error title=Invalid version::Provided version number must be higher than the current version ($CURRENT_VERSION)."
exit 1
fi
45 changes: 4 additions & 41 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
@@ -1,50 +1,13 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples

name: check

on:
push:
branches: master
pull_request:
branches: master

name: check

jobs:
check:
runs-on: ${{ matrix.config.os }}

name: ${{ matrix.config.os }} (${{ matrix.config.r }})

strategy:
fail-fast: false
matrix:
config:
- {os: macos-latest, r: 'release'}
- {os: windows-latest, r: 'release'}
- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'}
- {os: ubuntu-latest, r: 'release'}
- {os: ubuntu-latest, r: 'oldrel-1'}

env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
R_KEEP_PKG_SOURCE: yes

steps:
- uses: actions/checkout@v4

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

- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
http-user-agent: ${{ matrix.config.http-user-agent }}
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::rcmdcheck
needs: check

- uses: r-lib/actions/check-r-package@v2
with:
upload-snapshots: true
build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")'
uses: pdil/usmapdata/.github/workflows/check.yaml@master
secrets: inherit
16 changes: 16 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

name: lint

on:
push:
branches: master
pull_request:
branches: master

jobs:
lint:
permissions:
# for github/codeql-action/upload-sarif to upload SARIF results
security-events: write
uses: pdil/usmapdata/.github/workflows/lint.yaml@master
secrets: inherit
47 changes: 0 additions & 47 deletions .github/workflows/lintr.yml

This file was deleted.

75 changes: 5 additions & 70 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@

name: release
run-name: Release ${{ github.event.repository.name }} ${{ inputs.version }}

on:
workflow_dispatch:
Expand All @@ -11,73 +12,7 @@ on:

jobs:
release:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup R
uses: r-lib/actions/setup-r@v2

- name: Install R dependencies
uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: |
any::devtools
any::rhub
github::r-lib/revdepcheck
- name: Run release checks
env:
EMAIL: ${{ secrets.RHUB_EMAIL }}
TOKEN: ${{ secrets.RHUB_TOKEN }}
VERSION: ${{ inputs.version }}
run: |
source(".github/workflow-resources/release-checklist.R")
release_checklist(
Sys.getenv("EMAIL"),
Sys.getenv("TOKEN"),
Sys.getenv("VERSION")
)
shell: Rscript {0}

- name: Update NEWS.md version
uses: jacobtomlinson/gha-find-replace@v3
with:
find: "[unreleased]"
replace: "usmap ${{ inputs.version }}"
include: "NEWS.md"
regex: false

- name: Import GPG signing key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true

- name: Render PR body
id: pr-body
uses: chuhlomin/render-template@v1
with:
template: .github/workflow-resources/release-pr-body.md
vars: |
version: ${{ inputs.version }}
- name: Open pull request
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.BOT_PAT }}
author: ${{ secrets.BOT_USER }}
committer: ${{ secrets.BOT_USER }}
commit-message: "[automated] Prepare for ${{ inputs.version }} release"
branch: release/${{ inputs.version }}
title: Release version ${{ inputs.version }}
body: ${{ steps.pr-body.outputs.result }}
reviewers: pdil
assignees: pdil
labels: release
delete-branch: true
draft: true
uses: pdil/usmapdata/.github/workflows/release.yaml@master
secrets: inherit
with:
version: ${{ inputs.version }}
49 changes: 6 additions & 43 deletions .github/workflows/test-coverage.yaml
Original file line number Diff line number Diff line change
@@ -1,50 +1,13 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples

name: test-coverage

on:
push:
branches: [main, master]
branches: master
pull_request:
branches: [main, master]

name: test-coverage
branches: master

jobs:
test-coverage:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

steps:
- uses: actions/checkout@v4

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

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

- name: Test coverage
run: |
covr::codecov(
quiet = FALSE,
clean = FALSE,
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
shell: bash

- name: Upload test results
if: failure()
uses: actions/upload-artifact@v4
with:
name: coverage-test-failures
path: ${{ runner.temp }}/package
uses: pdil/usmapdata/.github/workflows/test-coverage.yaml@master
secrets: inherit

0 comments on commit 2628aa0

Please sign in to comment.