From 93e6c4a09f74a155e60516c32431ea316a8e2f0d Mon Sep 17 00:00:00 2001 From: Tom Schoonjans Date: Sat, 27 Jul 2024 06:39:35 +0100 Subject: [PATCH] Add build and publish to PyPI GHA workflow --- .github/workflows/build-publish-pypi.yml | 69 ++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 .github/workflows/build-publish-pypi.yml diff --git a/.github/workflows/build-publish-pypi.yml b/.github/workflows/build-publish-pypi.yml new file mode 100644 index 00000000..19859998 --- /dev/null +++ b/.github/workflows/build-publish-pypi.yml @@ -0,0 +1,69 @@ +name: Build and upload to PyPI + +on: + workflow_dispatch: + pull_request: + push: + branches: + - master + tags: + - v* + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + # macos-13 is an intel runner, macos-14 is apple silicon + os: [ubuntu-latest, windows-latest, macos-13, macos-14] + + steps: + - uses: actions/checkout@v4 + + - name: Build wheels + uses: pypa/cibuildwheel@v2.19.2 + + # https://github.com/actions/runner-images/issues/3342#issuecomment-2206538745 + - name: Install swig on macOS + if: ${{ startsWith(matrix.os, 'macos') }} + run: brew install swig + - uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl + retention-days: 1 + + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build sdist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v4 + with: + name: cibw-sdist + path: dist/*.tar.gz + retention-days: 1 + + upload_pypi: + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + environment: pypi + permissions: + id-token: write + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + steps: + - uses: actions/download-artifact@v4 + with: + # unpacks all CIBW artifacts into dist/ + pattern: cibw-* + path: dist + merge-multiple: true + + - uses: pypa/gh-action-pypi-publish@release/v1 + # with: + # To test: repository-url: https://test.pypi.org/legacy/ \ No newline at end of file