Gertrude
Back to blog
engineering

Setting up a Vapor + Postgres Github Action Test Workflow

Took me a bit of fiddling to figure out how to test my PostgreSQL+Vapor app on Github actions. Posting the basic workflow file for future googlers:

name: basic-ci

on: push

env:
  LOG_LEVEL: info
  DATABASE_USERNAME: vapor_username
  DATABASE_PASSWORD: vapor_password
  DATABASE_NAME: vapor_database

jobs:
  linux:
    runs-on: ubuntu-latest
    env:
      DATABASE_HOST: postgres
    services:
      postgres:
        image: postgres:latest
        env:
          POSTGRES_USER: vapor_username
          POSTGRES_PASSWORD: vapor_password
          POSTGRES_DB: vapor_database
    container: swift:5.4-focal
    steps:
      - name: checkout
        uses: actions/checkout@v2
      - name: run tests
        run: swift test

  macos:
    runs-on: macos-11
    steps:
      - name: setup xcode
        uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: 12.5
      - name: checkout
        uses: actions/checkout@v2
      - name: start postgres
        # if this isn't reliable, try this approach
        # https://gist.github.com/jaredh159/634285e52456fefc9f04fb2b4bd3af28
        run: brew services start postgres; sleep 5 && pg_isready
      - name: create db user and db
        run: |
          psql --command="CREATE USER vapor_username PASSWORD 'vapor_password'" --command="\du" postgres
          createdb --owner=vapor_username vapor_database
      - name: run tests
        run: swift test