Skip to content

Commit

Permalink
Setup workflows (#2)
Browse files Browse the repository at this point in the history
  • Loading branch information
walkowif authored Jun 11, 2024
1 parent 131dd44 commit 5903a1e
Show file tree
Hide file tree
Showing 4 changed files with 168 additions and 1 deletion.
1 change: 1 addition & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
^r\.package\.example\.Rproj$
^\.Rproj\.user$
^LICENSE\.md$
^.github$
36 changes: 36 additions & 0 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: Check 🛠

on:
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
branches:
- main
push:
branches:
- main

# This reusable workflow from insightsengineering/r.pkg.template will run once a PR to main branch is created.
jobs:
job-setup:
name: Should we run R CMD check?
runs-on: ubuntu-latest
outputs:
check_out: ${{ steps.check.outputs.run_r_cmd_check }}
steps:
- name: To check or not to check?
id: check
run: |
echo "run_r_cmd_check=false" >> $GITHUB_OUTPUT
r-cmd:
name: R CMD Check 🧬
needs: job-setup
# Call a workflow from a given GitHub repository, from a given branch (or tag).
uses: insightsengineering/r.pkg.template/.github/workflows/build-check-install.yaml@main
if: >
needs.job-setup.outputs.check_out == 'true'
130 changes: 130 additions & 0 deletions .github/workflows/simple.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
name: Simple workflow

on:
pull_request:
types:
- opened
- synchronize
- reopened
- ready_for_review
branches:
- main
push:
branches:
- main

env:
# additional flags for `R CMD CHECK`
EXTRA_CHECK_FLAGS: "--no-manual --no-vignettes"
# additional environmental vars for `R CMD CHECK`
# see manual here: https://rstudio.github.io/r-manuals/r-ints/Tools.html
_R_CHECK_TESTS_NLINES_: 0
_R_CHECK_VIGNETTES_NLINES_: 0
ENABLED_STEPS: |
checkout_repository
# setup_r
# setup_dependencies
# get_package_name
# build_r_package
# run_r_cmd_check
# upload_artifact

jobs:
# First job.
hello-world-from-r:
name: Hello, world!
runs-on: ubuntu-latest
steps:
- name: Setup R 🔧
uses: r-lib/actions/setup-r@v2

- name: Hello world! 💬
run: cat(paste0("Hello ", Sys.getenv("NAME"), "! 👋"))
shell: Rscript {0}
env:
NAME: "Your name"

# Second job - by default jobs will run in parallel, unless some dependencies
# are introduced between them.
build-and-check:
name: Build R package
runs-on: ubuntu-latest
steps:
- name: Checkout repo 🛎
# We're using an official GitHub Action.
uses: actions/[email protected]
if: contains(env.ENABLED_STEPS, 'checkout_repository')
with:
# Action inputs (arguments/parameters).
# In this case we clone the repository to the directory called the same
# as the repository name.
path: ${{ github.event.repository.name }}

- name: Setup R 🔧
if: contains(env.ENABLED_STEPS, 'setup_r')
# We're using a third-party GitHub Action.
uses: r-lib/actions/setup-r@v2

- name: Setup R dependencies 🔧
# We're using a third-party GitHub Action.
uses: r-lib/actions/setup-r-dependencies@v2
if: contains(env.ENABLED_STEPS, 'setup_dependencies')
with:
working-directory: ${{ github.event.repository.name }}

# Get package name and version from DESCRIPTION so that we'll know
# what's the name of the tar.gz file with the built package.
# pkgbuild is set as an output which can be accessed by subsequent steps.
- name: Get package name 📦
if: contains(env.ENABLED_STEPS, 'get_package_name')
id: package-name
run: |
PKGBUILD="$(Rscript -e 'cat(sprintf("%s_%s.tar.gz",(dcf <- read.dcf("DESCRIPTION"))[,"Package"], dcf[,"Version"]))')"
echo "PKGBUILD = $PKGBUILD"
echo "pkgbuild=$PKGBUILD" >> $GITHUB_OUTPUT
shell: bash
working-directory: ${{ github.event.repository.name }}

# Build a package stored in a directory called ${{ github.event.repository.name }}
# --no-manual --no-build-vignettes because this requires LaTeX.
- name: Build R package 🏗
if: contains(env.ENABLED_STEPS, 'build_r_package')
run: |
R CMD build --no-manual --no-build-vignettes ${{ github.event.repository.name }}
ls -l
shell: bash

# Check tar.gz package built in previous step.
# --no-manual --no-vignettes because this requires LaTeX.
- name: Run R CMD check 🏁
if: contains(env.ENABLED_STEPS, 'run_r_cmd_check')
run: |
env | grep -E '^_R'
echo "Let's run R CMD check..."
R CMD check ${EXTRA_CHECK_FLAGS} ${{ steps.package-name.outputs.pkgbuild }}
shell: bash

- name: Get tar.gz file name
if: contains(env.ENABLED_STEPS, 'upload_artifact')
id: tar-gz
# Use our custom action.
uses: user-workshop-cicd/action-example@setup-action
with:
filename-beginning: ${{ github.event.repository.name }}

# Upload tar.gz package as an artifact so it can be downloaded.
- name: Upload package build ⤴
if: contains(env.ENABLED_STEPS, 'upload_artifact')
uses: actions/upload-artifact@v4
with:
# Output of the custom action from the previous step
# are inputs of this action.
path: ${{ steps.tar-gz.outputs.full-filename }}
name: ${{ steps.tar-gz.outputs.full-filename }}

call-reusable-workflow:
name: Reusable workflow ♻️
uses: user-workshop-cicd/r.pkg.template/.github/workflows/sample-reusable-workflow.yaml@sample-reusable-workflow
with:
name: Octocat
2 changes: 1 addition & 1 deletion tests/testthat/test-hello.R
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ test_that("hello_cli() works", {

test_that("fix me!!!", {
expect_equal(1, 2)
})
})

0 comments on commit 5903a1e

Please sign in to comment.