-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
Showing
3 changed files
with
93 additions
and
140 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
This file was deleted.
Oops, something went wrong.
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,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/' |