CI #421
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
# Install packages, update data, test, and archive | |
name: CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
schedule: | |
- cron: "0 18 * * 2" | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
build: | |
if: contains(toJson(github.event.commits), '[skip ci]') == false | |
runs-on: ${{ matrix.config.os }} | |
name: ${{ matrix.config.os }} (${{ matrix.config.r }}) | |
strategy: | |
matrix: | |
config: | |
- {os: ubuntu-latest, r: '4.2.2', rspm: "https://packagemanager.rstudio.com/cran/__linux__/bionic/latest"} | |
env: | |
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true | |
RSPM: ${{ matrix.config.rspm }} | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 3 | |
- uses: r-lib/actions/setup-r@v2 | |
- name: Cache R packages | |
uses: actions/cache@v3 | |
with: | |
path: ${{ env.R_LIBS_USER }} | |
key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-2-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: | | |
${{ runner.os }}-${{ hashFiles('.github/R-version') }}-2- | |
- name: Install system dependencies | |
run: | | |
sudo apt-get -y update && sudo apt-get install -y \ | |
libgit2-dev libicu-dev gdal-bin proj-data proj-bin libv8-dev libprotobuf-dev protobuf-compiler \ | |
libudunits2-dev libgdal-dev libgeos-dev libproj-dev libfontconfig1-dev libjq-dev libmysqlclient-dev libpng-dev | |
sudo apt-get update | |
- name: Install packages | |
run: Rscript install-packages.R | |
- name: Update data | |
run: Rscript update-data.R | |
- name: Test | |
run: Rscript testthat.R | |
- name: Check for new files | |
id: check_files | |
run: | | |
if [[ -z "$(git status --porcelain)" ]] ; then | |
echo "Git status is empty" | |
echo "diff=FALSE" >> $GITHUB_OUTPUT | |
else | |
echo "diff=TRUE" >> $GITHUB_OUTPUT | |
fi | |
- name: Bump version | |
id: version | |
env: | |
LOG: ${{ github.event_name == 'pull_request' && '$(git log --no-merges --format=%B -n 1 HEAD^2)' || '$(git log --no-merges --format=%B -n 1 HEAD)' }} | |
CRON: ${{ github.event_name == 'schedule' && 'TRUE' || 'FALSE' }} | |
run: | | |
R -e "source('version_bump.R'); bump_version('${{ env.LOG }}', ${{ env.CRON }}, ${{ steps.check_files.outputs.diff }})" | |
if echo "$(git status --porcelain)" | grep -q version.txt ; then | |
echo "Version changed" | |
echo "new_ver=TRUE" >> $GITHUB_OUTPUT | |
else | |
echo "No version bump" | |
echo "new_ver=FALSE" >> $GITHUB_OUTPUT | |
fi | |
- name: Setup Tag | |
if: github.event_name != 'pull_request' && steps.version.outputs.new_ver == 'TRUE' | |
id: tagging | |
run: | | |
value=`cat version.txt` | |
echo "tag=$value" >> $GITHUB_OUTPUT | |
value="v${value}" | |
echo "release=$value" >> $GITHUB_OUTPUT | |
- name: Tag new version for release | |
if: github.event_name != 'pull_request' && steps.version.outputs.new_ver == 'TRUE' | |
env: | |
JOB_TAGS: ${{ github.event_name == 'schedule' && '[skip ci] [cron]' || '[skip ci]' }} | |
uses: EndBug/add-and-commit@v9 | |
with: | |
author_name: Weecology Deploy Bot | |
author_email: weecologydeploy@weecology.org | |
message: "Update data and trigger archive: GitHub Build ${{ github.run_number }} ${{ env.JOB_TAGS }}" | |
tag: ${{ steps.tagging.outputs.tag }} | |
- name: Create Release | |
if: github.event_name != 'pull_request' && steps.version.outputs.new_ver == 'TRUE' | |
id: create_release | |
uses: zendesk/action-create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ steps.tagging.outputs.tag }} | |
release_name: ${{ steps.tagging.outputs.tag }} | |
body: ${{ steps.tagging.outputs.release }} |