-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #151 from pharmaverse/chore/customize-workflows
Chore: customize github workflows to correctly install system dependencies
- Loading branch information
Showing
6 changed files
with
688 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
# Source: | ||
# https://github.com/pharmaverse/admiralci/blob/main/.github/workflows/lintr.yml | ||
# Modified to install system dependencies. | ||
|
||
name: Lint | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
r-version: | ||
description: "The version of R to use" | ||
default: "release" | ||
required: false | ||
type: choice | ||
options: | ||
- devel | ||
- latest | ||
lint-all-files: | ||
description: "Lint all files every time" | ||
default: "false" | ||
required: false | ||
type: string | ||
latest-lintr: | ||
description: "Latest lintr CRAN release" | ||
default: "false" | ||
required: false | ||
type: string | ||
install-package: | ||
description: "Install package locally." | ||
default: "false" | ||
required: false | ||
type: string | ||
workflow_call: | ||
inputs: | ||
r-version: | ||
description: "The version of R to use" | ||
default: "release" | ||
required: false | ||
type: string | ||
lint-all-files: | ||
description: "Lint all files every time" | ||
default: "false" | ||
required: false | ||
type: string | ||
latest-lintr: | ||
description: "Latest lintr CRAN release" | ||
default: "false" | ||
required: false | ||
type: string | ||
install-package: | ||
description: "Install package locally." | ||
default: "false" | ||
required: false | ||
type: string | ||
|
||
concurrency: | ||
group: lint-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
lint: | ||
name: Lint | ||
runs-on: ubuntu-latest | ||
container: | ||
image: "ghcr.io/pharmaverse/admiralci-${{ inputs.r-version }}:latest" | ||
if: > | ||
!contains(github.event.commits[0].message, '[skip lint]') | ||
env: | ||
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | ||
steps: | ||
##################### BEGIN boilerplate steps ##################### | ||
- name: Get branch names | ||
id: branch-name | ||
uses: tj-actions/branch-names@v8 | ||
|
||
- name: Checkout repo (PR) π | ||
uses: actions/[email protected] | ||
if: github.event_name == 'pull_request' | ||
with: | ||
ref: ${{ steps.branch-name.outputs.head_ref_branch }} | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
|
||
- name: Checkout repository | ||
uses: actions/[email protected] | ||
if: github.event_name != 'pull_request' | ||
with: | ||
ref: ${{ steps.branch-name.outputs.head_ref_branch }} | ||
|
||
- name: Restore cache | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
~/.staged.dependencies | ||
key: staged-deps | ||
|
||
- name: Run Staged dependencies | ||
uses: insightsengineering/staged-dependencies-action@v1 | ||
with: | ||
run-system-dependencies: true | ||
renv-restore: false | ||
enable-check: false | ||
direction: upstream | ||
git-ref: ${{ steps.branch-name.outputs.current_branch }} | ||
env: | ||
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Install latest release of lintr | ||
run: | | ||
install.packages("lintr", repos = "https://packagemanager.posit.co/cran/latest/") | ||
shell: Rscript {0} | ||
if: ${{ inputs.latest-lintr == 'true' }} | ||
|
||
- name: Install package | ||
run: renv::install(".", dependencies = "no-deps") | ||
shell: Rscript {0} | ||
if: ${{ inputs.install-package == 'true' }} | ||
##################### END boilerplate steps ##################### | ||
|
||
- name: Changed files | ||
id: files | ||
uses: Ana06/[email protected] | ||
with: | ||
format: "json" | ||
filter: "*" | ||
|
||
- name: Lint | ||
run: | | ||
exclusions_list <- NULL | ||
if (!identical("${{ inputs.lint-all-files }}", "true")) { | ||
changed_files <- jsonlite::fromJSON('${{ steps.files.outputs.added_modified }}') | ||
all_files <- list.files(recursive = TRUE) | ||
exclusions_list <- if (any(changed_files %in% c(".lintr", "renv.lock"))) { | ||
as.list(setdiff(all_files, changed_files)) | ||
} else { | ||
NULL | ||
} | ||
} | ||
lints <- lintr::lint_package(exclusions = exclusions_list) | ||
saveRDS(lints, file = "lints.rds") | ||
shell: Rscript {0} | ||
|
||
- name: Error if lints are detected | ||
run: | | ||
lints <- readRDS("lints.rds") | ||
if (length(lints) > 0L) { | ||
print(lints) | ||
stop("Lints detected. Please review and adjust code according to the comments provided.", call. = FALSE) | ||
} | ||
shell: Rscript {0} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
# Source: | ||
# https://github.com/pharmaverse/admiralci/blob/main/.github/workflows/man-pages.yml | ||
# Modified to install system dependencies. | ||
|
||
name: Man Pages | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
r-version: | ||
description: "The version of R to use" | ||
default: "release" | ||
required: false | ||
type: choice | ||
options: | ||
- devel | ||
- latest | ||
workflow_call: | ||
inputs: | ||
r-version: | ||
description: "The version of R to use" | ||
default: "release" | ||
required: false | ||
type: string | ||
|
||
concurrency: | ||
group: roxygen-${{ github.event.pull_request.number || github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
lint: | ||
name: Roxygen | ||
runs-on: ubuntu-latest | ||
container: | ||
image: "ghcr.io/pharmaverse/admiralci-${{ inputs.r-version }}:latest" | ||
if: > | ||
!contains(github.event.commits[0].message, '[skip lint]') | ||
env: | ||
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | ||
steps: | ||
##################### BEGIN boilerplate steps ##################### | ||
- name: Get branch names | ||
id: branch-name | ||
uses: tj-actions/branch-names@v8 | ||
|
||
- name: Checkout repo (PR) π | ||
uses: actions/[email protected] | ||
if: github.event_name == 'pull_request' | ||
with: | ||
ref: ${{ steps.branch-name.outputs.head_ref_branch }} | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
|
||
- name: Checkout repository | ||
uses: actions/[email protected] | ||
if: github.event_name != 'pull_request' | ||
with: | ||
ref: ${{ steps.branch-name.outputs.head_ref_branch }} | ||
|
||
- name: Restore cache | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
~/.staged.dependencies | ||
key: staged-deps | ||
|
||
- name: Run Staged dependencies | ||
uses: insightsengineering/staged-dependencies-action@v1 | ||
with: | ||
run-system-dependencies: true | ||
renv-restore: false | ||
enable-check: false | ||
direction: upstream | ||
git-ref: ${{ steps.branch-name.outputs.current_branch }} | ||
env: | ||
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Install dependencies from DESCRIPTION | ||
run: | | ||
remotes::install_local(force = TRUE, dependencies = TRUE) | ||
shell: Rscript {0} | ||
env: | ||
R_REMOTES_STANDALONE: "true" | ||
|
||
##################### END boilerplate steps ##################### | ||
|
||
- name: Generate man pages | ||
run: roxygen2::roxygenize('.', roclets = c('rd', 'collate', 'namespace')) | ||
shell: Rscript {0} | ||
|
||
- name: Set-up safe dir | ||
run: git config --global --add safe.directory "${GITHUB_WORKSPACE}" | ||
shell: bash | ||
|
||
- name: Roxygen check | ||
if: "!startsWith(github.event.comment.body, '/roxygenize')" | ||
run: | | ||
git status -s | ||
if [[ -n `git status -s | grep -E "man|DESCRIPTION"` ]] | ||
then { | ||
ROXYGEN_VERSION="$(Rscript -e 'packageVersion("roxygen2")' | awk '{print $NF}')" | ||
echo "π Manuals are not up-to-date with roxygen comments!" | ||
echo "π The following differences were noted:" | ||
git diff man/* DESCRIPTION | ||
echo -e "\nπ» Please rerun the following command on your workstation and push your changes" | ||
echo "--------------------------------------------------------------------" | ||
echo "roxygen2::roxygenize('.', roclets = c('rd', 'collate', 'namespace'))" | ||
echo "--------------------------------------------------------------------" | ||
echo "βΉ roxygen2 version that was used in this workflow: $ROXYGEN_VERSION" | ||
echo "π Please ensure that the 'RoxygenNote' field in the DESCRIPTION file matches this version" | ||
exit 1 | ||
} else { | ||
echo "π Manuals are up-to-date with roxygen comments" | ||
} | ||
fi | ||
shell: bash |
Oops, something went wrong.