name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: name: Test (Python ${{ matrix.python-version }} on ${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install click tomli tomli-w nuitka pytest pytest-cov - name: Run tests run: | pytest tests/ -v lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip pip install black isort - name: Check formatting run: | black --check . --exclude='.venv|build|dist' || true isort --check . --skip=.venv --skip=build --skip=dist || true release: name: Release runs-on: ubuntu-latest needs: test if: startsWith(github.ref, 'refs/tags/v') steps: - name: Checkout repository uses: actions/checkout@v4 - name: Create GitHub Release uses: softprops/action-gh-release@v1 with: generate_release_notes: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}