Skip to content

Update feature request template version to 1.6.2 #81

Update feature request template version to 1.6.2

Update feature request template version to 1.6.2 #81

Workflow file for this run

# ==============================================================================
# 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