location #1379
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: 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"}' |