Skip to content

build

build #6983

Workflow file for this run

name: build
on:
push:
branches:
- master
- development
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
- 'v[0-9]+.[0-9]+.[0-9]+-*'
pull_request:
branches:
- master
- development
schedule:
- cron: '0 0 * * *'
jobs:
build:
if: |
!(
contains(github.event.head_commit.message, '[ci skip]') ||
contains(github.event.head_commit.message, '[ci-skip]') ||
contains(github.event.head_commit.message, '[skip ci]') ||
contains(github.event.head_commit.message, '[skip-ci]')
)
env:
PGHOST: 127.0.0.1
PGUSER: postgres
RAILS_ENV: test
CROSSREF_EMAIL: ${{ secrets.CROSSREF_EMAIL }}
runs-on: ubuntu-20.04
strategy:
matrix:
worker: [0, 1, 2, 3]
services:
db:
image: postgis/postgis:15-3.4
ports: ['5432:5432']
env:
POSTGRES_HOST_AUTH_METHOD: trust
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Get startup date
id: datetime
run: |
echo "iso_date=$(date --iso-8601 -u)" >> $GITHUB_OUTPUT
echo "year_week=$(date -u +'%Y-%U')" >> $GITHUB_OUTPUT
- name: Git checkout
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
- name: Set up Ruby Bundler gems cache
uses: actions/cache@v4
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('.ruby-version', '**/Gemfile', '**/Gemfile.lock', 'exe/install-imagemagick7.sh') }}
- name: Set up Node 18 LTS
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Set up Node packages cache
uses: actions/cache@v4
with:
path: |
~/.npm
**/node_modules
key: ${{ runner.os }}-node-18-${{ hashFiles('**/package-lock.json') }}
- name: Set up assets cache
uses: actions/cache@v4
with:
path: |
tmp/cache/shakapacker
public/assets
public/packs-test
key: ${{ runner.os }}-assets-${{ steps.datetime.outputs.iso_date }}-${{ hashFiles('app/javascript/**', 'app/assets/**') }}
restore-keys: |
${{ runner.os }}-assets-${{ steps.datetime.outputs.iso_date }}
- name: Set up VCR cache
uses: actions/cache@v4
with:
path: spec/fixtures/vcr_cassettes
key: ${{ runner.os }}-vcr-rev2-${{ steps.datetime.outputs.year_week }}-${{ hashFiles('**/Gemfile.lock') }}-${{ matrix.worker }}
- name: Install apt packages
run: |
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install -y tesseract-ocr libgeos-dev libproj-dev
- name: Change ownership of /usr/src to runner user to allow cache to be restored
run: sudo chown $(id -u) /usr/src
- name: Set up imagemagick cache
uses: actions/cache@v4
with:
path: |
/usr/src/libheif-*
/usr/src/libde265-*
/usr/src/ImageMagick-7*
key: ${{ runner.os }}-imagemagick-${{ hashFiles('**/Gemfile.lock', 'exe/install-imagemagick7.sh') }}
- name: Change ownership of /usr/src back to root
run: |
sudo chown root /usr/src
sudo chown -R root /usr/src/libheif-* /usr/src/libde265-* /usr/src/ImageMagick-7* || true
- name: Install imagemagick
run: |
sudo apt-get purge -y imagemagick
sudo exe/install-imagemagick7.sh
- name: Set up TaxonWorks config files
run: |
cp config/application_settings.yml.ci config/application_settings.yml
cp config/secrets.yml.example config/secrets.yml
cp config/database.yml.ci config/database.yml
- name: Install Ruby gems
run: |
gem install bundler
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Install Node packages
run: |
npm install
- name: Set up database
run: |
bundle exec rails db:create
bundle exec rails db:migrate
- name: Precompile assets
run: bundle exec rails assets:precompile
- name: Run tests
env:
TEST_WORKER: ${{ matrix.worker }}
TEST_WORKERS: 4
run: .github/spec_runner.sh