After a bit of research and a lot of trial and error I finally got Github Actions working for CI on a Rails 7 (alpha 2) app that uses Postgres, esbuild and Tailwind CSS, plus StandardRB for formatting
It’s kind of hard to believe, but it seems you get it all for free!
Here’s what worked for me:
# test_and_lint.yml
name: Test and Lint
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install yarn and build assets
run: |
yarn --frozen-lockfile
yarn build
yarn build:css
- name: Install psql
run: sudo apt-get -yqq install libpq-dev
- name: Build DB
env:
PGHOST: localhost
PGUSER: postgres
PGPASSWORD: postgres
RAILS_ENV: test
run: bin/rails db:setup
- name: Run Tests
env:
PGHOST: localhost
PGUSER: postgres
PGPASSWORD: postgres
RAILS_ENV: test
run: |
bundle exec rake test
bundle exec rake test:system
lint:
runs-on: ubuntu-latest
steps:
- name: standardrb
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: amoeba/standardrb-action@v2
Big thanks to Andy Croll, his instructions were super helpful to get the basic build and test workflow working with Postgres.
Vincent Voyer’s instructions were helpful for the yarn installation step.
From there, I just needed to add the yarn build
and yarn build-css
commands to trigger the build steps defined in package.json
.