CI #1120
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 * * 1,4" | |
# 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: ubuntu-latest | |
env: | |
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- name: Tests will fail on PRs from forks | |
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository | |
run: | | |
echo Tests require pull requests be submitted from branches in the main repository | |
exit 1 | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 3 | |
- name: Setup R (Ubuntu) | |
uses: eddelbuettel/github-actions/r2u-setup@master | |
- name: Install system dependencies | |
run: | | |
pip install -U pandas numpy landsatxplore | |
- name: Install packages | |
run: Rscript install-packages.R | |
- name: Update data | |
run: | | |
echo WU_API_KEY = ${{ secrets.WU_API_KEY }} >> $HOME/.Renviron | |
echo USGS_PASSWORD = ${{ secrets.USGS_PASSWORD }} >> $HOME/.Renviron | |
R -e 'readRenviron("~/.Renviron")' | |
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 }} |