| name: Publish Python ๐ distributions ๐ฆ to PyPI |
| on: |
| release: |
| types: [published] |
| defaults: |
| run: |
| shell: |
| bash |
| jobs: |
| build-sdist: |
| runs-on: ubuntu-20.04 |
| steps: |
| - uses: actions/checkout@v3 |
| - name: Verify tag matches version |
| run: | |
| set -ex |
| version=$(cat TTS/VERSION) |
| tag="${GITHUB_REF/refs\/tags\/}" |
| if [[ "v$version" != "$tag" ]]; then |
| exit 1 |
| fi |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: 3.9 |
| - run: | |
| python -m pip install -U pip setuptools wheel build |
| - run: | |
| python -m build |
| - run: | |
| pip install dist/*.tar.gz |
| - uses: actions/upload-artifact@v2 |
| with: |
| name: sdist |
| path: dist/*.tar.gz |
| build-wheels: |
| runs-on: ubuntu-20.04 |
| strategy: |
| matrix: |
| python-version: ["3.9", "3.10", "3.11"] |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: ${{ matrix.python-version }} |
| - name: Install pip requirements |
| run: | |
| python -m pip install -U pip setuptools wheel build |
| python -m pip install -r requirements.txt |
| - name: Setup and install manylinux1_x86_64 wheel |
| run: | |
| python setup.py bdist_wheel --plat-name=manylinux1_x86_64 |
| python -m pip install dist/*-manylinux*.whl |
| - uses: actions/upload-artifact@v2 |
| with: |
| name: wheel-${{ matrix.python-version }} |
| path: dist/*-manylinux*.whl |
| publish-artifacts: |
| runs-on: ubuntu-20.04 |
| needs: [build-sdist, build-wheels] |
| steps: |
| - run: | |
| mkdir dist |
| - uses: actions/download-artifact@v2 |
| with: |
| name: "sdist" |
| path: "dist/" |
| - uses: actions/download-artifact@v2 |
| with: |
| name: "wheel-3.9" |
| path: "dist/" |
| - uses: actions/download-artifact@v2 |
| with: |
| name: "wheel-3.10" |
| path: "dist/" |
| - uses: actions/download-artifact@v2 |
| with: |
| name: "wheel-3.11" |
| path: "dist/" |
| - run: | |
| ls -lh dist/ |
| - name: Setup PyPI config |
| run: | |
| cat << EOF > ~/.pypirc |
| [pypi] |
| username=__token__ |
| password=${{ secrets.PYPI_TOKEN }} |
| EOF |
| - uses: actions/setup-python@v2 |
| with: |
| python-version: 3.9 |
| - run: | |
| python -m pip install twine |
| - run: | |
| twine upload --repository pypi dist/* |
| |