| name: PyPI Release |
| on: |
| release: |
| types: [published] |
|
|
| jobs: |
| build: |
| strategy: |
| fail-fast: false |
| matrix: |
| platform: [ubuntu-latest] |
| python-version: ["3.10", "3.11", "3.12"] |
|
|
| runs-on: ${{ matrix.platform }} |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| submodules: recursive |
|
|
| - uses: actions/setup-python@v5 |
| with: |
| python-version: ${{ matrix.python-version }} |
|
|
| - name: Free disk space |
| run: | |
| sudo rm -rf /usr/share/dotnet |
| sudo rm -rf /usr/local/lib/android |
| sudo rm -rf /opt/ghc |
| sudo rm -rf "/usr/local/share/boost" |
| |
| - name: Upgrade setuptools and wheel |
| run: | |
| pip install --no-cache-dir --upgrade setuptools wheel |
| |
| - name: Install dependencies on Ubuntu |
| if: runner.os == 'Linux' |
| run: | |
| sudo apt-get update |
| sudo apt-get install libopencv-dev -y |
| |
| - name: Install dependencies on macOS |
| if: runner.os == 'macOS' |
| run: | |
| brew update |
| brew install opencv |
| |
| - name: Install dependencies on Windows |
| if: runner.os == 'Windows' |
| run: | |
| choco install opencv -y |
| |
| - name: Add requirements |
| run: python -m pip install --upgrade setuptools wheel build |
|
|
| - name: Install Python dependencies |
| run: | |
| pip install --no-cache-dir pytest |
| pip install --no-cache-dir -r requirements.txt |
| sudo apt-get update && sudo apt-get install ffmpeg libsm6 libxext6 -y |
| |
| - name: Build source distribution |
| run: | |
| python -m build --outdir dist/ |
| ls -lh dist/ |
| |
| - name: Upload to GitHub Release |
| if: matrix.python-version == '3.10' && github.event_name == 'release' |
| uses: softprops/action-gh-release@v2 |
| with: |
| files: dist/*.whl |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
|
| - name: Archive wheels |
| if: matrix.python-version == '3.10' && github.event_name == 'release' |
| uses: actions/upload-artifact@v4 |
| with: |
| name: dist |
| path: dist/*.whl |
|
|
|
|
| pypi-publish: |
| name: upload release to PyPI |
| needs: build |
| runs-on: ubuntu-latest |
| environment: pypi |
| permissions: |
| |
| id-token: write |
| steps: |
| |
| - name: Download artifacts |
| uses: actions/download-artifact@v4 |
| with: |
| name: dist |
| path: dist |
|
|
| - name: List dist directory |
| run: ls -lh dist/ |
|
|
| - name: Publish package distributions to PyPI |
| uses: pypa/gh-action-pypi-publish@release/v1 |
|
|