bonfire-app/.github/workflows/bonfire.yaml
2021-09-23 09:19:59 +02:00

93 lines
3 KiB
YAML
Executable file

name: Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
name: Build and test
runs-on: ubuntu-latest
container: elixir:alpine
env:
POSTGRES_HOST: postgres
POSTGRES_PASSWORD: postgres
CI: true
SECRET_KEY_BASE: "kSNSvYkWk14onNdbYzhEqFyG5TzpOO9+FFlk5sIrhTk0RV6+FeL/nM8DWQffDah4woepgQdrP6J8cjWGyehcWcRWvIIWXsghp0yY9/fEjgfUekD15P9LGRCmu6exIQ6g"
SIGNING_SALT: "NPkqpeTx/q9xGQRWwRpqBWI7bCxeHMAF4L2PHntfjVtd8GZD2BQKe9KLnkIR5WbLVdZt24FWuR+Hy5WoXaZM4APydGvC2+w2enJmskOckX5VY1Bpvm7JGKu+QymgIgK/"
ENCRYPTION_SALT: "l+QT/gkdX722f57qSAUc+bZcqm5ZduXY4D0hp0glEiKdR267JsZ1/CZlrlhADcD8kzuaZGFWvJ2dlr6sujbzGQV5e04lKVIsZh3gfd8eqQBckIqH6L8TDRRz4M07YE+F"
services:
postgres:
# image: postgres
image: postgis/postgis:12-3.0-alpine
env:
POSTGRES_DB: bonfire_test
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
-
name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.0
with:
access_token: ${{ github.token }}
-
name: Install git (needed for checkout), tar (needed for cache), file (needed for bonfire_files)
run: apk add git tar file
-
name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 2 # needed for action-detect-and-tag-new-version
# - name: Set up Elixir
# uses: actions/setup-elixir@v1
# with:
# elixir-version: ${{ matrix.elixir }}
# otp-version: ${{ matrix.otp }}
# TODO: does not handle git deps correctly...
- name: Restore dependencies cache
uses: actions/cache@v2
id: cache
with:
path: |
deps
_build
key: ${{ runner.os }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
restore-keys: ${{ runner.os }}-mix-
- name: Install system deps
run: apk add mailcap ca-certificates openssl-dev tzdata gettext rust cargo make
- name: Install hex
run: mix local.hex --force
- name: Install rebar
run: mix local.rebar --force
- name: Install dependencies
run: mix deps.get
- name: Update Bonfire extensions to latest git versions
run: mix bonfire.deps.update
- name: Fetch any differences in dep version
run: mix deps.get
- name: Clean-build Bonfire extensions
run: mix bonfire.deps.clean
- name: Compile deps & app
run: MIX_ENV=test mix
- name: Set up database
run: MIX_ENV=test mix ecto.setup
- name: Run tests
run: mix test
- name: Check that database migrations can rollback
run: MIX_ENV=test mix ecto.rollback --all # && mix ecto.reset
# - name: Maybe tag/release new version
# uses: salsify/action-detect-and-tag-new-version@v2
# with:
# version-command: |
# grep 'version:' mix.exs | cut -d '"' -f2