Skip to content

CI

CI #2389

Workflow file for this run

name: CI
on:
push:
paths-ignore:
- '.cookiecutter/*'
- '.github/dependabot.yml'
- '.github/workflows/deploy.yml'
- '.github/workflows/redeploy.yml'
- 'bin/logger'
- 'conf/development.ini'
- 'production.ini'
- 'conf/supervisord*.conf'
- 'docs/*'
- 'requirements/*.in'
- 'requirements/dev.txt'
- '**/.gitignore'
- 'Dockerfile'
- 'LICENSE'
- '*.md'
- 'docker-compose.yml'
workflow_dispatch:
workflow_call:
schedule:
- cron: '0 1 * * *'
jobs:
Format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: .tox
key: format-${{ runner.os }}-tox-${{ hashFiles('tox.ini') }}-${{ hashFiles('requirements/*') }}
restore-keys: |
format-${{ runner.os }}-tox-
- run: python -m pip install 'tox<4'
- run: tox -e checkformatting
Lint:
runs-on: ubuntu-latest-32-cores
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: .tox
key: lint-${{ runner.os }}-tox-${{ hashFiles('tox.ini') }}-${{ hashFiles('requirements/*') }}
restore-keys: |
lint-${{ runner.os }}-tox-
- run: python -m pip install 'tox<4'
- run: tox -e lint
Tests:
runs-on: ubuntu-latest-32-cores
services:
postgres:
image: postgres:15.6-alpine
ports:
- 5432:5432
env:
POSTGRES_HOST_AUTH_METHOD: trust
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
elasticsearch:
image: hypothesis/elasticsearch:latest
ports:
- 9200:9200
env:
discovery.type: single-node
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: .tox
key: tests-${{ runner.os }}-tox-${{ hashFiles('tox.ini') }}-${{ hashFiles('requirements/*') }}
restore-keys: |
tests-${{ runner.os }}-tox-
- name: Create test database
run: psql -U postgres -h localhost -p 5432 -c 'CREATE DATABASE h_tests'
- run: python -m pip install 'tox<4'
- run: tox -e tests
env:
COVERAGE_FILE: .coverage.${{ matrix.python-version }}
- name: Upload coverage file
uses: actions/upload-artifact@v3
with:
name: coverage
path: .coverage.*
Coverage:
needs: tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: .tox
key: coverage-${{ runner.os }}-tox-${{ hashFiles('tox.ini') }}-${{ hashFiles('requirements/*') }}
restore-keys: |
coverage-${{ runner.os }}-tox-
- name: Download coverage files
uses: actions/download-artifact@v3
with:
name: coverage
- run: python -m pip install 'tox<4'
- run: tox -e coverage
Functests:
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15.6-alpine
ports:
- 5432:5432
env:
POSTGRES_HOST_AUTH_METHOD: trust
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
elasticsearch:
image: hypothesis/elasticsearch:latest
ports:
- 9200:9200
env:
discovery.type: single-node
rabbitmq:
image: rabbitmq:3.12-management-alpine
ports:
- 5672:5672
steps:
- uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: .tox
key: functests-${{ runner.os }}-tox-${{ hashFiles('tox.ini') }}-${{ hashFiles('requirements/*') }}
restore-keys: |
functests-${{ runner.os }}-tox-
- name: Create test database
run: psql -U postgres -h localhost -p 5432 -c 'CREATE DATABASE h_functests'
- run: python -m pip install 'tox<4'
- run: yarn install --immutable
- run: yarn build
- run: tox -e functests
Frontend:
uses: ./.github/workflows/frontend.yml