Specs #2481
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: 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 |