name: "Deploy Python Lib" on: release: types: - created permissions: contents: read pull-requests: read jobs: develop-matrix: strategy: matrix: os: [ quay.io/pypa/manylinux2014_x86_64 # replacement for ubuntu-latest, which is accepted on pypi # quay.io/pypa/manylinux2014_i686 # quay.io/pypa/manylinux2014_aarch64 # quay.io/pypa/manylinux2014_ppc64le # quay.io/pypa/manylinux2014_s390x, windows-latest, macos-latest ] python: ['3.9', '3.10', '3.11', '3.12'] runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: Install lib run: | pip install --upgrade pip pip install -e . - name: Build wheel run: | pip install setuptools pip install wheel python setup.py bdist_wheel - name: Archive build artifacts uses: actions/upload-artifact@v4 with: name: build-artifacts-${{ matrix.os }}-${{ matrix.python }} path: dist deploy: runs-on: ubuntu-latest needs: develop-matrix steps: - name: Checkout uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v4 with: python-version: '3.9' - name: Install twine run: | pip install --upgrade pip pip install twine - name: Download build artifacts uses: actions/download-artifact@v4 with: path: dist merge-multiple: true - name: Inspect dist files run: | ls -R dist - name: Upload to PyPI using twine run: | twine upload --skip-existing dist/* env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}