Skip to content

Specs

Specs #2475

Workflow file for this run

name: Specs
on:
push:
branches:
- "*"
- "*/*"
pull_request:
branches:
- "*"
- "*/*"
schedule:
- cron: '0 0 * * *'
jobs:
mariadb:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:${{ matrix.db_version }}
env:
MARIADB_ROOT_PASSWORD: "mariadb"
MARIADB_DATABASE: marten_test
ports:
- 3306:3306
options: >-
--health-cmd="healthcheck.sh
--connect
--innodb_initialized"
--health-interval=10s
--health-timeout=5s
--health-retries=3
continue-on-error: ${{ matrix.crystal == 'nightly' }}
strategy:
fail-fast: false
matrix:
db_version: ['10.11.6', '11.2.2']
crystal: [
'1.12.2',
'1.13.1',
'1.14.0',
'nightly',
]
container:
image: crystallang/crystal:${{ matrix.crystal }}
steps:
- uses: actions/checkout@v2
- name: Install packages required for MySQL
run: |
apt-get update
apt-get -yqq install mysql-client libmysqlclient-dev
- name: Create additional DB for MySQL
run: |
mysql -u root -h mariadb --password=mariadb -e 'create database marten_other_test;'
env:
PGPASSWORD: mysql
- name: Install shards
run: shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Setup env JSON file
run: cp .spec.env.json.ci .spec.env.json
- name: Run tests
run: scripts/run_batched_specs
env:
MARTEN_SPEC_DB_CONNECTION: mariadb
mysql:
runs-on: ubuntu-latest
services:
mysql:
image: bitnami/mysql:8.3.0
env:
MYSQL_ROOT_PASSWORD: "mysql"
MYSQL_DATABASE: marten_test
MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
ports:
- 3307:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
continue-on-error: ${{ matrix.crystal == 'nightly' }}
strategy:
fail-fast: false
matrix:
crystal: [
'1.12.2',
'1.13.1',
'1.14.0',
'nightly',
]
container:
image: crystallang/crystal:${{ matrix.crystal }}
steps:
- uses: actions/checkout@v2
- name: Install packages required for MySQL
run: |
apt-get update
apt-get -yqq install mysql-client libmysqlclient-dev
- name: Create additional DB for MySQL
run: |
mysql -u root -h mysql --password=mysql -e 'create database marten_other_test;'
env:
PGPASSWORD: mysql
- name: Install shards
run: shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Setup env JSON file
run: cp .spec.env.json.ci .spec.env.json
- name: Run tests
run: scripts/run_batched_specs
env:
MARTEN_SPEC_DB_CONNECTION: mysql
postgresql:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:${{ matrix.db_version }}
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: marten_test
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
continue-on-error: ${{ matrix.crystal == 'nightly' }}
strategy:
fail-fast: false
matrix:
db_version: ['14', '15', '16']
crystal: [
'1.12.2',
'1.13.1',
'1.14.0',
'nightly',
]
container:
image: crystallang/crystal:${{ matrix.crystal }}
steps:
- uses: actions/checkout@v2
- name: Install packages required for PostgreSQL
run: |
apt-get update
apt-get -yqq install libpq-dev postgresql-client libsqlite3-dev
- name: Create additional DB for PostgreSQL
run: |
createdb marten_other_test -h postgres -U postgres
env:
PGPASSWORD: postgres
- name: Install shards
run: shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Setup env JSON file
run: cp .spec.env.json.ci .spec.env.json
- name: Run tests
run: scripts/run_batched_specs
env:
MARTEN_SPEC_DB_CONNECTION: postgresql
sqlite:
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.crystal == 'nightly' }}
strategy:
fail-fast: false
matrix:
crystal: [
'1.12.2',
'1.13.1',
'1.14.0',
'nightly',
]
container:
image: crystallang/crystal:${{ matrix.crystal }}
steps:
- uses: actions/checkout@v2
- name: Install packages required for SQLite
run: |
apt-get update
apt-get -yqq install libsqlite3-dev
- name: Install shards
run: shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Setup env JSON file
run: cp .spec.env.json.ci .spec.env.json
- name: Run tests
run: scripts/run_batched_specs
generated-auth-project:
runs-on: ubuntu-latest
strategy:
fail-fast: false
container:
image: crystallang/crystal:1.14.0
steps:
- uses: actions/checkout@v2
- name: Install packages required for SQLite
run: |
apt-get update
apt-get -yqq install libsqlite3-dev
- name: Install shards
run: shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Build the Marten CLI
run: |
mkdir bin
crystal build src/marten_cli.cr -o bin/marten
- name: Generate a project with authentication
run: |
mkdir tmp
bin/marten new project test-auth --with-auth --dir=./tmp/test-auth
- name: Install generated project dependencies
run: |
cd tmp/test-auth
shards install --ignore-crystal-version --skip-postinstall --skip-executables
cd lib && rm -rf marten && ln -s ../../.. marten
- name: Run generated project tests
run: cd tmp/test-auth && crystal spec
generated-auth-app:
runs-on: ubuntu-latest
strategy:
fail-fast: false
container:
image: crystallang/crystal:1.14.0
steps:
- uses: actions/checkout@v2
- name: Install packages required for SQLite
run: |
apt-get update
apt-get -yqq install libsqlite3-dev
- name: Install shards
run: shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Build the Marten CLI
run: |
mkdir bin
crystal build src/marten_cli.cr -o bin/marten
- name: Generate a project with authentication
run: |
mkdir tmp
bin/marten new project test-auth --dir=./tmp/test-auth
- name: Install generated project dependencies
run: |
cd tmp/test-auth
shards install --ignore-crystal-version --skip-postinstall --skip-executables
cd lib && rm -rf marten && ln -s ../../.. marten
cd .. && crystal run manage.cr -- g auth my_auth
shards install --ignore-crystal-version --skip-postinstall --skip-executables
- name: Run generated project tests
run: cd tmp/test-auth && crystal spec