Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release workflow improvements #106

Merged
merged 11 commits into from
Mar 31, 2024
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