Repository navigation
Bump version to 0.13.0 (#175) #370
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 | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - '**' | |
| pull_request: {} | |
| # no permissions by default, the release job grants itself what it needs | |
| permissions: {} | |
| env: | |
| COLUMNS: 150 | |
| UV_FROZEN: '1' | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 | |
| with: | |
| python-version: '3.12' | |
| enable-cache: true # zizmor: ignore[cache-poisoning] -- Job does not produce release artifacts and does not have sensitive permissions | |
| - run: uv sync --group dev | |
| - run: make lint | |
| docs-build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 | |
| with: | |
| python-version: '3.12' | |
| enable-cache: false | |
| - run: uv sync --group docs | |
| - run: make docs | |
| - name: Store docs site | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: docs | |
| path: site | |
| test: | |
| name: test py${{ matrix.python-version }} on ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ['3.10', '3.11', '3.12', '3.13', '3.14', '3.15'] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| enable-cache: true # zizmor: ignore[cache-poisoning] -- Job does not produce release artifacts and does not have sensitive permissions | |
| - run: uv sync --group dev | |
| - run: uv pip freeze | |
| - run: mkdir coverage | |
| - name: test with extras | |
| run: uv run coverage run -m pytest | |
| env: | |
| COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}-with-extras | |
| CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}-with-extras | |
| - name: uninstall extras | |
| run: uv pip uninstall multidict numpy pydantic asyncpg sqlalchemy | |
| - name: test without extras | |
| run: uv run coverage run -m pytest | |
| env: | |
| COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}-without-extras | |
| CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}-without-extras | |
| - name: Store coverage files | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: coverage-${{ matrix.os }}-${{ matrix.python-version }} | |
| path: coverage | |
| include-hidden-files: true | |
| coverage-combine: | |
| needs: [test] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 | |
| with: | |
| python-version: '3.12' | |
| enable-cache: false | |
| - name: Get coverage files | |
| uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 | |
| with: | |
| merge-multiple: true | |
| pattern: coverage-* | |
| path: coverage | |
| - run: uv sync --group dev | |
| - run: ls -la coverage | |
| - run: uv run coverage combine coverage | |
| - run: uv run coverage report | |
| - run: uv run coverage html --show-contexts --title "devtools coverage for ${{ github.sha }}" | |
| - name: Store coverage HTML | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: coverage-html | |
| path: htmlcov | |
| # https://github.com/marketplace/actions/alls-green#why used for branch protection checks | |
| check: | |
| if: always() | |
| needs: [test, lint, docs-build, coverage-combine] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Decide whether the needed jobs succeeded or failed | |
| uses: re-actors/alls-green@b5b5b37504aa4183270bd3d855c52a67f212be35 # release/v1 | |
| with: | |
| jobs: ${{ toJSON(needs) }} | |
| release: | |
| needs: | |
| - check | |
| if: "success() && startsWith(github.ref, 'refs/tags/')" | |
| runs-on: ubuntu-latest | |
| environment: release | |
| permissions: | |
| # for trusted publishing to PyPI | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 | |
| with: | |
| python-version: '3.12' | |
| enable-cache: false | |
| - name: get docs | |
| uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 | |
| with: | |
| name: docs | |
| path: site | |
| - name: check GITHUB_REF matches package version | |
| id: check-tag | |
| uses: samuelcolvin/check-python-version@17d859ba0a6af9ffcaac5c70608fed36ed33e32a # v5.1 | |
| with: | |
| version_file_path: pyproject.toml | |
| - run: uv build | |
| - name: upload to pypi | |
| run: uv publish --trusted-publishing always | |
| - name: publish docs | |
| if: '!fromJSON(steps.check-tag.outputs.IS_PRERELEASE)' | |
| uses: cloudflare/wrangler-action@953926a2e2182532811c01a25e53647d93bf07c0 # v4.1.3 | |
| with: | |
| apiToken: ${{ secrets.cloudflare_api_token }} | |
| accountId: ${{ secrets.cloudflare_account_id }} | |
| command: pages deploy --project-name=python-devtools --branch=main site |