Skip to content

more checks

more checks #235

Workflow file for this run

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