mirror of
https://github.com/mii443/tokenizers.git
synced 2025-08-22 16:25:30 +00:00
173 lines
5.2 KiB
YAML
173 lines
5.2 KiB
YAML
name: Python Release
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
AWS_DEFAULT_REGION: us-east-1
|
|
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN_DIST }}
|
|
DIST_DIR: ${{ github.sha }}
|
|
|
|
jobs:
|
|
lock_exists:
|
|
runs-on: ubuntu-latest
|
|
name: Cargo.lock
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Cargo.lock lock exists
|
|
run: cat Cargo.lock
|
|
working-directory: ./bindings/python
|
|
|
|
build:
|
|
name: build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }})
|
|
# only run on push to main and on release
|
|
needs: [lock_exists]
|
|
if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || contains(github.event.pull_request.labels.*.name, 'Full Build')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu, macos, windows]
|
|
target: [x86_64, aarch64]
|
|
manylinux: [auto]
|
|
include:
|
|
- os: ubuntu
|
|
platform: linux
|
|
- os: windows
|
|
ls: dir
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10
|
|
- os: windows
|
|
ls: dir
|
|
target: x86_64
|
|
python-architecture: x64
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13
|
|
- os: windows
|
|
ls: dir
|
|
target: i686
|
|
python-architecture: x86
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13
|
|
# - os: windows
|
|
# ls: dir
|
|
# target: aarch64
|
|
# interpreter: 3.11 3.12
|
|
- os: macos
|
|
target: aarch64
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: i686
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: aarch64
|
|
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: armv7
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13
|
|
# musllinux
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: x86_64
|
|
manylinux: musllinux_1_1
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: aarch64
|
|
manylinux: musllinux_1_1
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: ppc64le
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13
|
|
- os: ubuntu
|
|
platform: linux
|
|
target: s390x
|
|
interpreter: 3.9 3.10 3.11 3.12 3.13
|
|
exclude:
|
|
- os: windows
|
|
target: aarch64
|
|
# # Optimized PGO builds for x86_64 manylinux and windows follow a different matrix,
|
|
# # maybe in future maturin-action can support this automatically
|
|
# - os: ubuntu
|
|
# target: x86_64
|
|
# manylinux: auto
|
|
# - os: windows
|
|
# target: x86_64
|
|
# Windows on arm64 only supports Python 3.11+
|
|
|
|
runs-on: ${{ matrix.os }}-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: set up python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.13"
|
|
architecture: ${{ matrix.python-architecture || 'x64' }}
|
|
|
|
- run: pip install -U twine
|
|
|
|
- name: build wheels
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
target: ${{ matrix.target }}
|
|
working-directory: ./bindings/python
|
|
manylinux: ${{ matrix.manylinux || 'auto' }}
|
|
container: ${{ matrix.container }}
|
|
args: --release --out dist --interpreter ${{ matrix.interpreter || '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10' }} ${{ matrix.extra-build-args }}
|
|
rust-toolchain: stable
|
|
docker-options: -e CI
|
|
|
|
- run: ${{ matrix.ls || 'ls -lh' }} dist/
|
|
working-directory: ./bindings/python
|
|
|
|
- run: twine check --strict dist/*
|
|
working-directory: ./bindings/python
|
|
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: pypi_files-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.manylinux }}
|
|
path: ./bindings/python/dist
|
|
build-sdist:
|
|
name: build sdist
|
|
needs: [lock_exists]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: PyO3/maturin-action@v1
|
|
with:
|
|
working-directory: ./bindings/python
|
|
command: sdist
|
|
args: --out dist
|
|
rust-toolchain: stable
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: pypi_files-srt
|
|
path: ./bindings/python/dist
|
|
|
|
|
|
upload_package:
|
|
name: Upload package to PyPi
|
|
runs-on: ubuntu-latest
|
|
needs: [build, build-sdist]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.13"
|
|
architecture: x64
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: ./bindings/python/dist
|
|
merge-multiple: true
|
|
# Temporary deactivation while testing abi3 CI
|
|
# - name: Upload to PyPi
|
|
# working-directory: ./bindings/python
|
|
# run: |
|
|
# pip install twine
|
|
# twine upload dist/* -u __token__ -p "$PYPI_TOKEN"
|