Skip to content

chore(ci): revise pypi publishing #156

chore(ci): revise pypi publishing

chore(ci): revise pypi publishing #156

Workflow file for this run

name: build
on:
push:
tags:
- v*
branches:
- master
pull_request:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
cancel-in-progress: true
env:
STABLE_PYTHON_VERSION: "3.11"
CIBW_BUILD_FRONTEND: build
jobs:
build-sdit:
name: Build source distribution
if: github.event_name == 'push' || ! github.event.pull_request.draft
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Fetch all tags
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.STABLE_PYTHON_VERSION }}
- name: Install hatch
run: pip install --upgrade hatch
- name: Create source distribution
run: |
hatch build --target sdist
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: ./dist/*.tar.*
if-no-files-found: error
build-x86_64:
name: Build wheels on ${{ matrix.os }} (x86, 64-bit)
if: github.event_name == 'push' || ! github.event.pull_request.draft
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
archs: x86_64
- os: macos-latest
archs: x86_64
- os: windows-latest
archs: AMD64
steps:
- uses: actions/checkout@v4
with:
# Fetch all tags
fetch-depth: 0
- name: Create wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: ${{ matrix.archs }}
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: ./wheelhouse/*.whl
if-no-files-found: error
build-arm64:
name: Build wheels on ${{ matrix.os }} (arm64)
# As this requires emulation, it's not worth running on PRs
if: >-
github.event_name == 'push' &&
startsWith(github.event.ref, 'refs/tags')
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
archs: aarch64
- os: macos-latest
archs: arm64
steps:
- uses: actions/checkout@v4
with:
# Fetch all tags
fetch-depth: 0
- name: Set up QEMU
if: matrix.os == 'ubuntu-latest'
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- name: Create wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS: ${{ matrix.archs }}
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: ./wheelhouse/*.whl
if-no-files-found: error
check:
name: Check wheels
runs-on: ubuntu-latest
needs:
- build-x86_64
- build-arm64
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.STABLE_PYTHON_VERSION }}
- uses: actions/download-artifact@v3
with:
name: wheels
path: wheelhouse
- run: |
pipx run twine check --strict wheelhouse/*
publish:
name: Publish wheels
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
runs-on: ubuntu-latest
environment: pypi
needs: [check]
permissions:
# Required for trusted publishing
id-token: write
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
path: wheels
- name: Push build artifacts to PyPI
uses: pypa/[email protected]
with:
skip-existing: true
password: ${{ secrets.PYPI_TOKEN }}
packages-dir: wheels