From e571dc278a9d6ac2e6bab91c3aa2d4f4b66d2428 Mon Sep 17 00:00:00 2001 From: chfl4gs Date: Mon, 4 Oct 2021 21:12:49 +0800 Subject: [PATCH] PyPI publishing --- .github/workflows/PyPI-publishing.yml | 111 ++++++++++++++++++++++++++ bindings/python/build_wheel.sh | 14 ++++ 2 files changed, 125 insertions(+) create mode 100644 .github/workflows/PyPI-publishing.yml create mode 100755 bindings/python/build_wheel.sh diff --git a/.github/workflows/PyPI-publishing.yml b/.github/workflows/PyPI-publishing.yml new file mode 100644 index 00000000..63d98e90 --- /dev/null +++ b/.github/workflows/PyPI-publishing.yml @@ -0,0 +1,111 @@ +name: PyPI 📦 Distribution + +on: [push] + +jobs: + build: + runs-on: ${{ matrix.config.os }} + name: ${{ matrix.config.name }} + strategy: + fail-fast: false + matrix: + config: + - { + os: windows-latest, + arch: x64, + python-ver: '3.8', + name: 'win_amd64' + } + - { + os: windows-latest, + arch: x32, + python-ver: '3.8', + name: 'win32' + } + - { + os: ubuntu-latest, + arch: x64, + python-ver: '3.8', + name: 'manylinux2014_x86_64' + } + - { + os: ubuntu-latest, + arch: x32, + python-ver: '3.8', + name: 'manylinux2014_i686' + } + - { + os: ubuntu-latest, + arch: x64, + python-ver: '3.8', + name: 'sdist' + } + - { + os: macos-latest, + arch: x64, + python-ver: '3.8', + name: 'macos_x86_64' + } + steps: + - uses: actions/checkout@v2 + + - name: '🛠️ Set up Python' + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.config.python-ver }} + + - name: '🛠️ Add msbuild to PATH' + if: contains(matrix.config.name, 'win') + uses: microsoft/setup-msbuild@v1.0.3 + with: + vs-version: '16.5' + + - name: '🛠️ Win build dependencies' + if: contains(matrix.config.name, 'win') + shell: bash + run: | + choco install ninja cmake + + - name: '🛠️ Install dependencies' + run: | + pip install setuptools wheel + + - name: '🚧 Build distribution' + shell: bash + run: | + if [ ${{ matrix.config.name }} == 'win32' ]; then + cd bindings/python && python setup.py build -p win32 sdist bdist_wheel -p win32 + rm dist/*.tar.gz + elif [ ${{ matrix.config.name }} == 'manylinux1_i686' ]; then + docker run --rm -v `pwd`/:/work dockcross/manylinux2014-x86 > ./dockcross + chmod +x ./dockcross + ./dockcross bindings/python/build_wheel.sh + elif [ ${{ matrix.config.name }} == 'manylinux1_x86_64' ]; then + docker run --rm -v `pwd`/:/work dockcross/manylinux2014-x64 > ./dockcross + chmod +x ./dockcross + ./dockcross bindings/python/build_wheel.sh + elif [ ${{ matrix.config.name }} == 'sdist' ]; then + cd bindings/python && python setup.py sdist + else + cd bindings/python && python setup.py bdist_wheel + fi + - name: '📤 Upload artifact' + uses: actions/upload-artifact@v2 + with: + path: ${{ github.workspace }}/bindings/python/dist/* + + publish: + needs: [build] + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags') + steps: + - uses: actions/download-artifact@v2 + with: + name: artifact + path: dist + + - name: '📦 Publish distribution to PyPI' + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.pypi_pass }} diff --git a/bindings/python/build_wheel.sh b/bindings/python/build_wheel.sh new file mode 100755 index 00000000..e3c9d444 --- /dev/null +++ b/bindings/python/build_wheel.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e -x + +cd bindings/python + +# Compile wheels +if [ -f /opt/python/cp36-cp36m/bin/python ];then + /opt/python/cp36-cp36m/bin/python setup.py bdist_wheel +else + python3 setup.py bdist_wheel +fi +cd dist +auditwheel repair *.whl +mv -f wheelhouse/*.whl .