Last active
August 21, 2020 11:54
-
-
Save vvo/5f7b8a1d34d5efc2df18140fb1d3ed20 to your computer and use it in GitHub Desktop.
Rails and PostgreSQL setup for GitHub actions (CI)
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
name: Test | |
on: [push] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
# Similar to docker-compose.yml but not the same, 🤷♂️ | |
services: | |
postgres: | |
image: postgres:11.6-alpine | |
env: | |
POSTGRES_PASSWORD: password | |
ports: | |
- 5432:5432 | |
# needed because the postgres container does not provide a healthcheck | |
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Install Ruby version specified in `.ruby-version` | |
uses: eregon/use-ruby-action@master # this will use by default the .ruby-version file in your repository | |
- name: Install required apt packages | |
run: | | |
sudo apt-get -y install libpq-dev | |
- name: Setup cache key and directory for gems cache | |
uses: actions/cache@v1 | |
with: | |
path: vendor/bundle | |
key: ${{ runner.os }}-gem-use-ruby-${{ hashFiles('**/Gemfile.lock') }} | |
- name: Read Node.js version to install from `.nvmrc` | |
run: echo "##[set-output name=NVMRC;]$(cat .nvmrc)" | |
id: nvm | |
- name: Install required Node.js version | |
uses: actions/setup-node@v1 | |
with: | |
node-version: "${{ steps.nvm.outputs.NVMRC }}" | |
- name: Get Yarn cache directory path | |
id: yarn-cache | |
run: echo "::set-output name=dir::$(yarn cache dir)" | |
- name: Setup cache key and directory for node_modules cache | |
uses: actions/cache@v1 | |
with: | |
path: ${{ steps.yarn-cache.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
- name: Bundle install | |
run: | | |
bundle config path vendor/bundle | |
bundle install --jobs 4 --retry 3 | |
- name: Yarn install | |
run: yarn --frozen-lockfile | |
- name: Rails test | |
env: # Or as an environment variable | |
RAILS_MASTER_KEY: ${{ secrets.RAILS_MASTER_KEY }} | |
run: | | |
bundle exec rails db:setup | |
bundle exec rails test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment