Skip to content

ci: Add GitHub artifact attestations to package distribution #211

ci: Add GitHub artifact attestations to package distribution

ci: Add GitHub artifact attestations to package distribution #211

Workflow file for this run

name: Wheels
on:
workflow_dispatch:
inputs:
overrideVersion:
description: Manually force a version
release:
types:
- published
pull_request:
paths:
- .github/workflows/wheels.yml
concurrency:
group: wheels-${{ github.head_ref }}
cancel-in-progress: true
env:
SETUPTOOLS_SCM_PRETEND_VERSION: ${{ github.event.inputs.overrideVersion }}
jobs:
build_sdist:
name: Build SDist
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Build SDist
run: pipx run build --sdist
- name: Check metadata
run: pipx run twine check --strict dist/*.tar.gz
- uses: actions/upload-artifact@v4
with:
path: dist/*
name: wheels-sdist
build_arch_wheels:
name: ${{ matrix.python }} on ${{ matrix.arch }}
runs-on: ubuntu-22.04
strategy:
matrix:
python: [37, 38, 39, 310, 311, 312]
arch: [aarch64]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: docker/setup-qemu-action@v3.0.0
with:
platforms: all
- uses: pypa/cibuildwheel@v2.18
env:
CIBW_BUILD: cp${{ matrix.python }}-manylinux_*
CIBW_ARCHS: ${{ matrix.arch }}
- name: Verify clean directory
run: git diff --exit-code
shell: bash
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
path: wheelhouse/*
name: wheel-aarch-${{ strategy.job-index }}
build_wheels:
name: ${{ matrix.build }} ${{ matrix.arch }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: macos-13
arch: auto64
build: "*"
- os: macos-14
arch: auto64
build: "*"
- os: windows-2019
arch: auto64
build: "cp*"
- os: windows-2019
arch: auto64
build: "pp*"
- os: windows-2019
arch: auto32
build: "*"
- os: ubuntu-latest
arch: auto64
build: "*manylinux*"
- os: ubuntu-latest
arch: auto64
build: "*musllinux*"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: pypa/cibuildwheel@v2.18
env:
CIBW_BUILD: ${{ matrix.build }}
CIBW_ARCHS: ${{ matrix.arch }}
- name: Verify clean directory
run: git diff --exit-code
shell: bash
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
path: wheelhouse/*.whl
name: wheels-${{ strategy.job-index }}
upload_all:
name: Upload if release
needs: [build_wheels, build_arch_wheels, build_sdist]
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'
environment:
name: pypi
url: https://pypi.org/p/boost-histogram
permissions:
id-token: write
attestations: write
contents: read
steps:
- uses: actions/download-artifact@v4
with:
pattern: wheels-*
merge-multiple: true
path: dist
- name: List all files
run: ls -lh dist
- name: Generate artifact attestation for sdist and wheels
uses: actions/attest-build-provenance@173725a1209d09b31f9d30a3890cf2757ebbff0d # v1.1.2
with:
subject-path: "dist/boost_histogram-*"
- uses: pypa/gh-action-pypi-publish@release/v1