Development #27
Workflow file for this run
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: Test | |
on: | |
push: | |
branches: | |
- development | |
paths-ignore: | |
- '**.md' | |
- 'LICENSE' | |
- '.gitignore' | |
pull_request: | |
branches: | |
- master | |
- development | |
types: [opened, synchronize, reopened] | |
paths-ignore: | |
- '**.md' | |
- 'LICENSE' | |
- '.gitignore' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} | |
cancel-in-progress: true | |
jobs: | |
setup: | |
name: Setup Poetry | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Install Poetry | |
run: pipx install poetry | |
- name: Configure Poetry | |
run: | | |
poetry config virtualenvs.create false | |
- name: Cache Poetry virtualenv | |
uses: actions/cache@v4 | |
id: cache | |
with: | |
path: ./.venv | |
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }} | |
- name: Install Dependencies | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: poetry install | |
lint: | |
name: Lint | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- run: pipx install poetry | |
- uses: actions/cache@v4 | |
with: | |
path: ./.venv | |
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }} | |
- name: Configure Poetry | |
run: poetry config virtualenvs.create false | |
- name: Run Code Quality Checks | |
run: | | |
poetry run isort . --check-only --diff | |
poetry run black . --check --diff | |
poetry run flake8 . | |
test: | |
name: Test Python ${{ matrix.python-version }} | |
needs: setup | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [ "3.12" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y portaudio19-dev python3-all-dev | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- run: pipx install poetry | |
- uses: actions/cache@v4 | |
with: | |
path: ./.venv | |
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }}-py-${{ matrix.python-version }} | |
- name: Configure Poetry for virtual environment | |
run: | | |
poetry config virtualenvs.create true | |
poetry config virtualenvs.in-project true | |
- name: Install Dependencies (including dev) | |
run: poetry install --with dev | |
- name: Run tests with coverage | |
run: poetry run pytest tests/ -v --cov=mic_control --cov-report=term-missing | |
security: | |
name: Security Scan | |
needs: setup | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- run: pipx install poetry | |
- uses: actions/cache@v4 | |
with: | |
path: ./.venv | |
key: ${{ runner.os }}-poetry-${{ hashFiles('poetry.lock') }} | |
- name: Configure Poetry | |
run: poetry config virtualenvs.create false | |
- name: Run Bandit | |
run: poetry run bandit -r mic_control/ -v | |
- name: Run Safety Check | |
continue-on-error: true | |
run: | | |
poetry run pip install safety | |
poetry run safety check --ignore 70612 | |
- name: Run pip-audit | |
continue-on-error: true | |
run: | | |
poetry run pip install pip-audit | |
poetry run pip-audit --ignore jinja2 |