name: CI on: push: branches: [master, main] tags: ['v*'] pull_request: branches: [master, main] jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip pip install ruff - name: Run Ruff run: ruff check src/ tests/ typecheck: name: Type Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -e ".[dev]" - name: Run mypy run: mypy src/ test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -e ".[dev]" - name: Run pytest run: pytest --cov=src/py_dvt_ate --cov-report=xml - name: Check coverage run: | coverage report --fail-under=80 || echo "Coverage below 80% - will enforce after MVP" release: name: Release needs: [lint, typecheck, test] if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install build tools run: | python -m pip install --upgrade pip pip install build - name: Build package run: python -m build - name: Create Release uses: softprops/action-gh-release@v1 with: files: dist/* generate_release_notes: true