name: Release SGLang Kernel to PyPI

on:
  push:
    branches:
      - main
    paths:
      - sgl-kernel/pyproject.toml
  workflow_dispatch:

concurrency:
  group: release-pypi-kernel-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build-wheels:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
        cuda-version: ['12.1']

    steps:
    - uses: actions/checkout@v4

    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}

    - name: Build wheels for Python ${{ matrix.python-version }} and CUDA ${{ matrix.cuda-version }}
      run: |
        cd sgl-kernel
        chmod +x ./build.sh
        ./build.sh "${{ matrix.python-version }}" "${{ matrix.cuda-version }}"

    - name: Upload to pypi
      working-directory: sgl-kernel
      run: |
        pip install twine
        python3 -m twine upload dist/* -u __token__ -p ${{ secrets.PYPI_TOKEN }}
