Lock file #124
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: Code quality | |
# PROCESS | |
# | |
# 1. Install all dependencies and spin off containers for all supported Python versions | |
# 2. Run code formatters and linters (various checks) for code standard | |
# 3. Run static typing checker for potential bugs | |
# 4. Run entire test suite for regressions except end-to-end (unit, functional, performance) | |
# 5. Run static analysis (in addition to CodeQL) for common insecure code practices | |
# 6. Run complexity baseline to avoid error-prone bugs and keep maintenance lower | |
# 7. Collect and report on test coverage | |
# USAGE | |
# | |
# Always triggered on new PRs, PR changes and PR merge. | |
on: | |
pull_request: | |
paths: | |
- "aws_lambda_powertools/**" | |
- "tests/**" | |
- "pyproject.toml" | |
- "poetry.lock" | |
- "mypy.ini" | |
branches: | |
- develop | |
push: | |
paths: | |
- "aws_lambda_powertools/**" | |
- "tests/**" | |
- "pyproject.toml" | |
- "poetry.lock" | |
- "mypy.ini" | |
branches: | |
- develop | |
permissions: | |
contents: read | |
jobs: | |
quality_check: | |
runs-on: ubuntu-latest | |
strategy: | |
max-parallel: 4 | |
matrix: | |
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
env: | |
PYTHON: "${{ matrix.python-version }}" | |
permissions: | |
contents: read # checkout code only | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Install poetry | |
run: pipx install poetry | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: "poetry" | |
- name: Install dependencies | |
run: make dev | |
- name: Formatting and Linting | |
run: make lint | |
- name: Static type checking | |
run: make mypy | |
- name: Test with pytest | |
run: make test | |
- name: Security baseline | |
run: make security-baseline | |
- name: Complexity baseline | |
run: make complexity-baseline | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # 3.1.6 | |
with: | |
file: ./coverage.xml | |
env_vars: PYTHON | |
name: aws-lambda-powertools-python-codecov |