build: Add venv file #227
Workflow file for this run
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
| --- | |
| name: CI/CD | |
| on: # yamllint disable-line rule:truthy | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| release: | |
| types: | |
| - published | |
| permissions: read-all | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| run: uv python install 3.13 | |
| - name: Install dependencies | |
| run: uv sync --all-extras | |
| - name: Ruff with tox | |
| run: uv run tox -e ruff | |
| - name: Pylint with tox | |
| run: uv run tox -e pylint | |
| - name: Markdownlint | |
| uses: DavidAnson/markdownlint-cli2-action@v19 | |
| with: | |
| globs: | | |
| **/*.md | |
| !.venv/** | |
| !.tox/** | |
| !site/** | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.12", "3.13"] | |
| dj-version: [django52, django60] | |
| services: | |
| redis: | |
| image: redis:7-alpine | |
| ports: | |
| - 6379:6379 | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python ${{ matrix.python-version }} | |
| run: uv python install "$PY_VERSION" | |
| env: | |
| PY_VERSION: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: uv sync --all-extras | |
| - name: Test with tox | |
| run: uv run tox -e "py${PY_VERSION//.}-${DJ_VERSION}" | |
| env: | |
| PY_VERSION: ${{ matrix.python-version }} | |
| DJ_VERSION: ${{ matrix.dj-version }} | |
| REDIS_URL: redis://localhost:6379/0 | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| file: ./coverage.xml | |
| flags: unittests | |
| name: ${{ matrix.python-version }}-${{ matrix.dj-version }} | |
| release: | |
| name: Release to PyPI | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| environment: release | |
| permissions: | |
| # IMPORTANT: this permission is mandatory for trusted publishing | |
| id-token: write | |
| contents: read | |
| if: github.event_name == 'release' | |
| needs: | |
| - lint | |
| - test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| - name: Set up Python | |
| run: uv python install 3.13 | |
| - name: Build Package | |
| run: uv build | |
| - name: Publish package distributions to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 |