more checks #235
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: asynctnt | |
| on: [push] | |
| jobs: | |
| test: | |
| strategy: | |
| matrix: | |
| os: [ ubuntu-latest, macos-latest ] | |
| python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.14t', 'pypy3.10', 'pypy3.11'] | |
| tarantool: ['1.10', '2', '3'] | |
| exclude: | |
| - os: macos-latest | |
| tarantool: '1.10' | |
| - os: macos-latest | |
| tarantool: '2' | |
| - python-version: 'pypy3.10' | |
| tarantool: '1.10' | |
| - python-version: 'pypy3.11' | |
| tarantool: '1.10' | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install Tarantool ${{ matrix.tarantool }} on Ubuntu | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| curl -L https://tarantool.io/release/${{ matrix.tarantool }}/installer.sh | bash | |
| sudo apt-get -y install tarantool | |
| - name: Install Tarantool ${{ matrix.tarantool }} on MacOS | |
| if: matrix.os == 'macos-latest' | |
| run: brew install tarantool | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: uv sync --extra test | |
| - name: Run ruff check | |
| run: uv run ruff check . | |
| - name: Run ruff format check | |
| run: uv run ruff format --check . | |
| - name: Run tests | |
| run: uv run pytest . | |
| - name: Run tests with uvloop | |
| if: "!contains(matrix.python-version, 'pypy')" | |
| env: | |
| USE_UVLOOP: "1" | |
| run: uv run pytest . | |
| - name: Run coverage tests | |
| if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.14' && matrix.tarantool == '3' | |
| env: | |
| ASYNCTNT_DEBUG: "1" | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}" | |
| run: | | |
| make clean | |
| uv pip install -e '.[test]' | |
| uv run pytest --cov | |
| ./scripts/run_until_success.sh uv run coverage report -m | |
| ./scripts/run_until_success.sh uv run coverage html | |
| build-wheels: | |
| name: Build wheels on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ ubuntu-latest, windows-latest, macos-latest ] | |
| needs: | |
| - test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.14' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install cibuildwheel | |
| run: uv tool install cibuildwheel | |
| - name: Install pyproject-build | |
| run: uv tool install build | |
| - name: Build source archive | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| pyproject-build -s . | |
| - name: Build wheels | |
| run: cibuildwheel --output-dir dist | |
| env: | |
| CIBW_ENABLE: pypy pypy-eol | |
| CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-* cp313-* cp314-* cp314t-* pp310-* pp311-*" | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }} | |
| path: ./dist/* | |
| publish: | |
| name: Publish wheels | |
| if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
| needs: | |
| - build-wheels | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: pypi | |
| url: https://pypi.org/p/asynctnt | |
| permissions: | |
| id-token: write # Required for trusted publishing | |
| contents: write # Required for releases | |
| steps: | |
| - name: Get tag | |
| id: get_tag | |
| run: echo ::set-output name=TAG::${GITHUB_REF/refs\/tags\//} | |
| - run: echo "Current tag is ${{ steps.get_tag.outputs.TAG }}" | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.14' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Install dependencies | |
| run: | | |
| uv pip install --upgrade build | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: wheels-ubuntu-latest | |
| path: dist | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: wheels-macos-latest | |
| path: dist | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: wheels-windows-latest | |
| path: dist | |
| - name: Build source archive | |
| run: | | |
| python -m build . -s | |
| tree dist | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| print-hash: true | |
| - uses: marvinpinto/action-automatic-releases@latest | |
| with: | |
| repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
| prerelease: false | |
| title: ${{ steps.get_tag.outputs.TAG }} | |
| files: | | |
| dist/* | |
| docs: | |
| name: Publish docs | |
| if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
| runs-on: ubuntu-latest | |
| needs: | |
| - test | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.14' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Build docs | |
| run: make docs | |
| - name: Deploy | |
| uses: JamesIves/github-pages-deploy-action@v4 | |
| with: | |
| branch: gh-pages | |
| folder: docs/_build/html |