Build(deps): Bump pluggy from 1.5.0 to 1.6.0 in /dependencies/default #2108
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: [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 | |
continue-on-error: ${{ !matrix.required }} | |
strategy: | |
matrix: | |
os: [ubuntu, windows] | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
required: [true] | |
include: | |
- os: ubuntu | |
python-version: 3.14-dev | |
required: false | |
- os: windows | |
python-version: 3.14-dev | |
required: false | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
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 }} | |
prepare-release-notes: | |
name: Prepare Release Notes | |
needs: [lint] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Python | |
uses: actions/setup-python@v5 | |
- name: Install towncrier | |
run: pip install towncrier==24.8.0 | |
- name: Install pandoc | |
run: | | |
sudo apt-get install -y pandoc | |
- name: Install pytest-asyncio | |
run: pip install . | |
- name: Compile Release Notes Draft | |
if: ${{ !contains(github.ref, 'refs/tags/') }} | |
run: towncrier build --draft --version "${{ needs.lint.outputs.version }}" > release-notes.rst | |
- name: Extract release notes from Git tag | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
run: | | |
set -e | |
git for-each-ref "${GITHUB_REF}" --format='%(contents)' > release-notes.rst | |
# Strip PGP signature from signed tags | |
sed -i "/-----BEGIN PGP SIGNATURE-----/,/-----END PGP SIGNATURE-----\n/d" release-notes.rst | |
- name: Convert Release Notes to Markdown | |
run: | | |
pandoc -s -o release-notes.md release-notes.rst | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: release-notes.md | |
path: release-notes.md | |
deploy: | |
name: Deploy | |
environment: release | |
# Run only on pushing a tag | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
needs: [lint, check, prepare-release-notes] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download distributions | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist | |
path: dist | |
- name: Collected dists | |
run: | | |
tree dist | |
- name: PyPI upload | |
uses: pypa/[email protected] | |
with: | |
attestations: true | |
packages-dir: dist | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
- name: Download Release Notes | |
uses: actions/download-artifact@v4 | |
with: | |
name: release-notes.md | |
path: release-notes.md | |
- name: GitHub Release | |
uses: ncipollo/release-action@v1 | |
with: | |
name: pytest-asyncio ${{ needs.lint.outputs.version }} | |
artifacts: dist/* | |
bodyFile: release-notes.md | |
prerelease: ${{ needs.lint.outputs.prerelease }} | |
token: ${{ secrets.GITHUB_TOKEN }} |