[pre-commit.ci] pre-commit autoupdate #1802
This file contains 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: [v*] | |
pull_request: | |
branches: [main] | |
merge_group: | |
workflow_dispatch: | |
env: | |
PYTHON_LATEST: 3.13 | |
jobs: | |
lint: | |
name: Run linters | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.version.outputs.version }} | |
prerelease: ${{ steps.version.outputs.prerelease }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- name: Install GitHub matcher for ActionLint checker | |
run: | | |
echo "::add-matcher::.github/actionlint-matcher.json" | |
- name: Install pre-commit | |
run: python -m pip install pre-commit | |
- name: Run pre-commit checks | |
run: pre-commit run --all-files --show-diff-on-failure | |
- name: Install check-wheel-content, and twine | |
run: python -m pip install build check-wheel-contents twine | |
- name: Build package | |
run: python -m build | |
- name: List result | |
run: ls -l dist | |
- name: Check wheel contents | |
run: check-wheel-contents dist/*.whl | |
- name: Check long_description | |
run: python -m twine check dist/* | |
- name: Install pytest-asyncio | |
run: pip install . | |
- name: Get version info | |
id: version | |
run: python ./tools/get-version.py >> $GITHUB_OUTPUT | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
test: | |
name: ${{ matrix.os }} - Python ${{ matrix.python-version }} | |
runs-on: ${{ matrix.os }}-latest | |
strategy: | |
matrix: | |
os: [ubuntu, windows] | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
if: "!endsWith(matrix.python-version, '-dev')" | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: deadsnakes/action@v3.2.0 | |
if: endsWith(matrix.python-version, '-dev') | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -VV | |
python -m site | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade coverage[toml] virtualenv tox tox-gh-actions | |
- name: Run tox targets for ${{ matrix.python-version }} | |
run: python -m tox | |
- name: Store coverage data | |
uses: actions/upload-artifact@v4 | |
if: "!endsWith(matrix.os, 'windows')" | |
with: | |
name: coverage-python-${{ matrix.python-version }} | |
path: coverage/coverage.* | |
if-no-files-found: error | |
check: | |
name: Check | |
if: always() | |
needs: [lint, test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_LATEST }} | |
- name: Install Coverage.py | |
run: | | |
set -xe | |
python -m pip install --upgrade coverage[toml] | |
- name: Download coverage data for all test runs | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: coverage-* | |
path: coverage | |
merge-multiple: true | |
- name: Combine coverage data and create report | |
run: | | |
coverage combine | |
coverage xml | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v5 | |
with: | |
files: coverage.xml | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
deploy: | |
name: Deploy | |
environment: release | |
# Run only on pushing a tag | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
needs: [lint, check] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install pandoc | |
run: | | |
sudo apt-get install -y pandoc | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download distributions | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
- name: Collected dists | |
run: | | |
tree dist | |
- name: Convert README.rst to Markdown | |
run: | | |
pandoc -s -o README.md README.rst | |
- name: PyPI upload | |
uses: pypa/gh-action-pypi-publish@v1.12.3 | |
with: | |
attestations: true | |
packages-dir: dist | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
- name: GitHub Release | |
uses: ncipollo/release-action@v1 | |
with: | |
name: pytest-asyncio ${{ needs.lint.outputs.version }} | |
artifacts: dist/* | |
bodyFile: README.md | |
prerelease: ${{ needs.lint.outputs.prerelease }} | |
token: ${{ secrets.GITHUB_TOKEN }} |