name: PR Gate on: pull_request: branches: [main] paths-ignore: - "**/*.md" - "docs/**" jobs: lint: name: Lint (ruff) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - run: pip install ruff - run: ruff check . test: name: Test (pytest) runs-on: ubuntu-latest strategy: matrix: python-version: ["3.11", "3.12"] steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - run: pip install -e .[dev] - run: pytest tests/ -v --tb=short bandit: name: SAST (bandit) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - run: pip install bandit - run: bandit -r decnet/ -ll -x decnet/services/registry.py pip-audit: name: Dependency audit (pip-audit) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.11" - run: pip install pip-audit - run: pip install -e .[dev] - run: pip-audit --skip-editable