name: Build and upload Python wheels on: workflow_dispatch: release: types: - published jobs: build_sdist: name: Build source distribution runs-on: ubuntu-latest steps: - name: Check out repo uses: actions/checkout@v3 - name: Install Python 3.9 uses: actions/setup-python@v3 with: python-version: 3.9 - name: Build and check sdist run: | python setup.py sdist - name: Upload sdist uses: actions/upload-artifact@v3 with: name: dist path: dist/*.tar.gz build_wheels: name: Build Google Benchmark wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - name: Check out Google Benchmark uses: actions/checkout@v3 - name: Set up Python 3.9 uses: actions/setup-python@v3 with: python-version: 3.9 - name: Install and run cibuildwheel on ${{ matrix.os }} env: CIBW_BUILD: 'cp37-* cp38-* cp39-* cp310-*' CIBW_SKIP: "cp37-*-arm64 *-musllinux_*" # TODO: Build ppc64le, aarch64 using some other trick CIBW_ARCHS_LINUX: x86_64 CIBW_ARCHS_MACOS: x86_64 arm64 CIBW_ARCHS_WINDOWS: AMD64 CIBW_BEFORE_ALL_LINUX: > curl -O --retry-delay 5 --retry 5 https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo && cp vbatts-bazel-epel-7.repo /etc/yum.repos.d/bazel.repo && yum install -y bazel4 CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py run: | pip install cibuildwheel python -m cibuildwheel --output-dir wheelhouse - name: Upload Google Benchmark ${{ matrix.os }} wheels uses: actions/upload-artifact@v3 with: name: dist path: ./wheelhouse/*.whl pypi_upload: name: Publish google-benchmark wheels to PyPI needs: [build_sdist, build_wheels] runs-on: ubuntu-latest steps: - uses: actions/download-artifact@v3 with: name: dist path: dist - uses: pypa/gh-action-pypi-publish@v1.5.0 with: user: __token__ password: ${{ secrets.PYPI_PASSWORD }}