name: 'SDK: Code Quality' on: push: branches: - 'master' - 'v5.*' paths: - 'prowler/**' - 'tests/**' - 'pyproject.toml' - 'poetry.lock' - '.github/workflows/sdk-code-quality.yml' pull_request: branches: - 'master' - 'v5.*' paths: - 'prowler/**' - 'tests/**' - 'pyproject.toml' - 'poetry.lock' - '.github/workflows/sdk-code-quality.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: sdk-code-quality: runs-on: ubuntu-latest timeout-minutes: 20 permissions: contents: read strategy: matrix: python-version: - '3.9' - '3.10' - '3.11' - '3.12' steps: - name: Checkout repository uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Check for SDK changes id: check-changes uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47.0.0 with: files_ignore: | prowler/CHANGELOG.md docs/** permissions/** api/** ui/** dashboard/** mcp_server/** README.md mkdocs.yml .backportrc.json .env docker-compose* examples/** .gitignore contrib/** - name: Install Poetry if: steps.check-changes.outputs.any_changed == 'true' run: pipx install poetry==2.1.1 - name: Set up Python ${{ matrix.python-version }} if: steps.check-changes.outputs.any_changed == 'true' uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 with: python-version: ${{ matrix.python-version }} cache: 'poetry' - name: Install dependencies if: steps.check-changes.outputs.any_changed == 'true' run: | poetry install --no-root poetry run pip list - name: Check Poetry lock file if: steps.check-changes.outputs.any_changed == 'true' run: poetry check --lock - name: Lint with flake8 if: steps.check-changes.outputs.any_changed == 'true' run: poetry run flake8 . --ignore=E266,W503,E203,E501,W605,E128 --exclude contrib,ui,api - name: Check format with black if: steps.check-changes.outputs.any_changed == 'true' run: poetry run black --exclude api ui --check . - name: Lint with pylint if: steps.check-changes.outputs.any_changed == 'true' run: poetry run pylint --disable=W,C,R,E -j 0 -rn -sn prowler/