Skip to content

updated-stratification-structure #1462

updated-stratification-structure

updated-stratification-structure #1462

Workflow file for this run

name: CI
on: [push]
jobs:
standards:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python for linting, formatting, type checking
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Set up Poetry for linting, formatting, type checking
run: |
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache poetry venv
uses: actions/cache@v2
with:
path: .venv
key: venv-lint-python3.8-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
run: poetry install -E linting --no-dev
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
poetry run flake8 titan --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
poetry run flake8 titan --count --exit-zero --max-complexity=12 --max-line-length=88 --statistics
- name: Check code formatting with black
run: poetry run black . --check
- name: Static Type Checking with mypy
run: poetry run mypy titan
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python for testing
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Set up Poetry for testing
run: |
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache poetry venv
uses: actions/cache@v2
with:
path: .venv
key: venv-python3.8-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
run: poetry install
- name: Unit Test with pytest
run: poetry run pytest -m unit --cov=titan --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: unit
integration-deterministic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python for testing
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Set up Poetry for testing
run: |
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache poetry venv
uses: actions/cache@v2
with:
path: .venv
key: venv-python3.8-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
run: poetry install
- name: Integration Test with pytest
run: poetry run pytest -m integration_deterministic --cov=titan --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: integration
integration-stochastic:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python for testing
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Set up Poetry for testing
run: |
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache poetry venv
uses: actions/cache@v2
with:
path: .venv
key: venv-python3.10-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
run: poetry install
- name: Integration Test with pytest
continue-on-error: true
run: poetry run pytest -m integration_stochastic --cov=titan --cov-report=xml
- name: Re-run integration tests if failed
continue-on-error: true
if: ${{ failure() }}
run: poetry run pytest -m integration_stochastic --cov=titan --cov-report=xml
- name: Re-run integration tests if failed (x2)
if: ${{ failure() }}
run: poetry run pytest -m integration_stochastic --cov=titan --cov-report=xml
- name: Upload coverage to Codecov
if: ${{ always() }}
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: integration
pypy-install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up pypy for testing
uses: actions/setup-python@v2
with:
python-version: pypy-3.8
- name: Set up Poetry for testing
run: |
pip install poetry
poetry config virtualenvs.in-project true
- name: Cache poetry venv
uses: actions/cache@v2
with:
path: .venv
key: venv-pypy3.8-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
run: poetry install --no-dev
trigger_rebuild:
runs-on: ubuntu-latest
needs: [unit, integration-deterministic]
steps:
- name: Trigger Param App re-build
run: |
curl -XPOST -H "Authorization: token ${{ secrets.GH_TOKEN }}" -H "Accept: application/vnd.github.everest-preview+json" -H "Content-Type: application/json" https://api.github.com/repos/pph-collective/titan-params-app/dispatches --data '{"event_type": "build_application"}'