mirror of
https://github.com/google/benchmark.git
synced 2025-01-28 04:40:17 +08:00
df44bf7187
Until the PyPI account is recovered, it should be possible to upload wheels with the GitHub secrets that were previously used. Changes the PyPI upload action sourcing to point to the v1 stable release branch, which receives rolling updates and is the canonical way of including the wheel publishing action. Uploading will probably need another release, because setuptools_scm needs to produce a clean tag that the PyPI API allows as an upload.
92 lines
2.5 KiB
YAML
92 lines
2.5 KiB
YAML
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@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Install Python 3.12
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.12
|
|
- run: python -m pip install build
|
|
- name: Build sdist
|
|
run: python -m build --sdist
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: dist-sdist
|
|
path: dist/*.tar.gz
|
|
|
|
build_wheels:
|
|
name: Build Google Benchmark wheels on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-13, macos-14, windows-latest]
|
|
|
|
steps:
|
|
- name: Check out Google Benchmark
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Set up QEMU
|
|
if: runner.os == 'Linux'
|
|
uses: docker/setup-qemu-action@v3
|
|
with:
|
|
platforms: all
|
|
|
|
- name: Build wheels on ${{ matrix.os }} using cibuildwheel
|
|
uses: pypa/cibuildwheel@v2.17
|
|
env:
|
|
CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*"
|
|
CIBW_SKIP: "*-musllinux_*"
|
|
CIBW_TEST_SKIP: "cp38-macosx_*:arm64"
|
|
CIBW_ARCHS_LINUX: auto64 aarch64
|
|
CIBW_ARCHS_WINDOWS: auto64
|
|
CIBW_BEFORE_ALL_LINUX: bash .github/install_bazel.sh
|
|
# Grab the rootless Bazel installation inside the container.
|
|
CIBW_ENVIRONMENT_LINUX: PATH=$PATH:$HOME/bin
|
|
CIBW_TEST_COMMAND: python {project}/bindings/python/google_benchmark/example.py
|
|
|
|
- name: Upload Google Benchmark ${{ matrix.os }} wheels
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: dist-${{ matrix.os }}
|
|
path: wheelhouse/*.whl
|
|
|
|
merge_wheels:
|
|
name: Merge all built wheels into one artifact
|
|
runs-on: ubuntu-latest
|
|
needs: build_wheels
|
|
steps:
|
|
- name: Merge wheels
|
|
uses: actions/upload-artifact/merge@v4
|
|
with:
|
|
name: dist
|
|
pattern: dist-*
|
|
delete-merged: true
|
|
|
|
pypi_upload:
|
|
name: Publish google-benchmark wheels to PyPI
|
|
needs: [merge_wheels]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: dist
|
|
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
with:
|
|
user: __token__
|
|
password: ${{ secrets.PYPI_PASSWORD }}
|