Skip to content

Commit

Permalink
ci: switch to GitHub Actions
Browse files Browse the repository at this point in the history
The goal is for the new setup to largely follow the Drone setup, but
there are some notable differences:

 * The Drone pipelines used custom images built to track Metworx's
   Ubuntu version (currently 18.04, soon to be 20.04).  The GitHub
   Actions use GitHub-hosted runners and test with the two most recent
   Ubuntu releases available (20.04 and 22.04).

   r-lib/actions is used to install R and dependencies at the time of
   the run, with the built-in caching of setup-r-dependencies.

 * There is a build for the latest R version in addition to the R
   versions that were tested by Drone (3.6, 4.0, and 4.1).

 * For a PR, the Drone setup had two builds, one triggered by the
   branch push (testing on branch tip) and another by the PR (testing
   on merge with base).

   For the new setup, there is just one build triggered by the PR.
   It's done on the merge of the PR branch and its base.

   This means that the tip of the PR branch isn't tested.  In general,
   that's fine because the merge is what ultimately will land.  And
   for the cases where testing on the tip of the branch is useful
   (e.g., debugging a discrepancy due to a semantic merge conflict), a
   'scratch/*' branch pointing to the same spot can be pushed.
  • Loading branch information
kyleam committed May 3, 2024
1 parent d23466d commit 05b25f8
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 140 deletions.
3 changes: 1 addition & 2 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
\.github
\.drone\.jsonnet
^data-raw$

tests/testthat/image/build
Expand Down Expand Up @@ -33,7 +32,7 @@ Makefile
^README\.md$
^NEWS\.md$
inst/covr
\.drone.yml
^\.github$
pmtables\.Rcheck
.*\.tar\.gz
inst/vignette
Expand Down
138 changes: 0 additions & 138 deletions .drone.yml

This file was deleted.

92 changes: 92 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: CI
on:
push:
branches:
- 'main'
- 'scratch/**'
tags:
- '[0-9]+.[0-9]+.[0-9]+'
- '[0-9]+.[0-9]+.[0-9]+.[0-9]+'
pull_request:

jobs:
check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
strategy:
fail-fast: false
matrix:
config:
- os: ubuntu-20.04
r: 3.6.3
# For a texPreview that's still compatible with R < 4.0
rspm: 'https://packagemanager.posit.co/cran/__linux__/focal/2022-03-25'
- os: ubuntu-20.04
r: 4.0.5
- os: ubuntu-20.04
r: 4.1.3
- os: ubuntu-latest
r: release
env:
R_KEEP_PKG_SOURCE: yes
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
use-public-rspm: true
env:
RSPM: ${{ matrix.config.rspm }}
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::rcmdcheck
upgrade: ${{ matrix.config.r == '3.6.3' && 'FALSE' || 'TRUE' }}
- name: Install other system dependencies
shell: bash
run: sudo apt-get install dvipng texlive-latex-base texlive-fonts-extra
- uses: r-lib/actions/check-r-package@v2
release:
if: github.ref_type == 'tag'
name: Upload release
needs: check
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: r-lib/actions/setup-r@v2
with:
r-version: release
use-public-rspm: true
# For pkgpub.
extra-repositories: 'https://mpn.metworx.com/snapshots/stable/2024-03-01'
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: any::pkgpub
- name: Configure Git
shell: bash
run: |
git config --global user.name CI
git config --global user.email ci@metrumrg
- name: Create output directory
shell: bash
run: echo "REPO_DIR=$(mktemp -d)" >>$GITHUB_ENV
- name: Create CRAN-like repo for release
run: pkgpub::create_tagged_repo("${{ env.REPO_DIR }}")
shell: Rscript {0}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::906087756158:role/github-actions-mpn-s3-publish
aws-region: us-east-1
- name: 'Publish package: ${{ github.ref_name }}'
run: |
aws s3 sync \
'${{ env.REPO_DIR }}/${{ github.ref_name }}/' \
's3://mpn.metworx.dev/releases/${{ github.event.repository.name }}/${{ github.ref_name }}/'
- name: 'Publish package: latest_tag'
run: |
aws s3 sync \
'${{ env.REPO_DIR }}/${{ github.ref_name }}/' \
's3://mpn.metworx.dev/releases/${{ github.event.repository.name }}/latest_tag/'

0 comments on commit 05b25f8

Please sign in to comment.