Update feature request template version to 1.6.2 #81
This file contains hidden or 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
| # ============================================================================== | |
| # File: .github/workflows/ci.yml | |
| # Project: Apotropaios - Firewall Manager (Python Variant) | |
| # Synopsis: Continuous integration pipeline | |
| # Description: Runs on every push and PR: static lint (pyflakes), mypy | |
| # strict type checking, pytest suite across Python 3.12 and | |
| # 3.13 with coverage artifact upload, dedicated security-test | |
| # job, and repository consistency verification (version | |
| # locations and documentation accuracy). | |
| # Notes: - Action pins follow the project standard: checkout@v6, | |
| # upload-artifact@v6 | |
| # - Concurrency cancels superseded runs per ref | |
| # Version: 1.6.0 | |
| # ============================================================================== | |
| name: CI | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # ============================================================================ | |
| # Static Lint (pyflakes) | |
| # ============================================================================ | |
| lint: | |
| name: Lint (pyflakes) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install pyflakes | |
| run: pip3 install pyflakes | |
| - name: Run pyflakes (intentional re-export/registration imports excepted) | |
| run: | | |
| python3 -m pyflakes apotropaios/ scripts/ tests/ | |
| - name: Run pyflakes on tests | |
| run: python3 -m pyflakes tests/ | |
| # ============================================================================ | |
| # Type Checking (mypy --strict) | |
| # ============================================================================ | |
| typecheck: | |
| name: Type Check (mypy --strict) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install mypy | |
| run: pip3 install mypy | |
| - name: Run mypy strict | |
| run: python3 -m mypy apotropaios/ --strict --python-version 3.12 | |
| # ============================================================================ | |
| # Test Suite (pytest across Python matrix) | |
| # ============================================================================ | |
| test: | |
| name: Test (Python ${{ matrix.python-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.12", "3.13"] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install dev dependencies | |
| run: pip3 install pytest pytest-cov | |
| - name: Run test suite with coverage | |
| run: | | |
| python3 -m pytest tests/ -v --tb=short \ | |
| --cov=apotropaios --cov-report=xml --cov-report=term | |
| - name: Upload coverage artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: coverage-py${{ matrix.python-version }} | |
| path: coverage.xml | |
| retention-days: 14 | |
| # ============================================================================ | |
| # Security Tests (injection, traversal) | |
| # ============================================================================ | |
| security: | |
| name: Security Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install pytest | |
| run: pip3 install pytest | |
| - name: Run security tests | |
| run: python3 -m pytest tests/security/ -v --tb=short | |
| # ============================================================================ | |
| # Repository Consistency (versions + documentation accuracy) | |
| # ============================================================================ | |
| consistency: | |
| name: Consistency (versions, docs) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| - name: Install pytest (used by docs validator test-count check) | |
| run: pip3 install pytest | |
| - name: Verify version consistency | |
| run: python3 scripts/check_version_consistency.py | |
| - name: Verify documentation accuracy | |
| run: python3 scripts/validate_docs.py |