README and Workflow Trigger changes (#5) #41
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: | |
- master | |
- development | |
- 'feature/**' | |
- 'bugfix/**' | |
- 'hotfix/**' | |
- 'refactor/**' | |
- 'chore/**' | |
- 'docs/**' | |
- 'test/**' | |
pull_request: | |
branches: | |
- master | |
types: [opened, synchronize, reopened] | |
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') }}-${{ github.event_name }} | |
- name: Configure Poetry for virtual environment | |
run: | | |
poetry config virtualenvs.create true | |
poetry config virtualenvs.in-project true | |
- name: Install Dependencies | |
run: poetry install --with dev | |
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 . | |
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 | |
test: | |
name: test | |
needs: [ lint, security ] | |
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 |