Deploy C++ #53
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy C++ | |
on: | |
workflow_dispatch: | |
inputs: | |
publish-pypi: | |
type: boolean | |
description: Publish to PyPI | |
jobs: | |
determine-source-date-epoch: | |
name: "Determine SOURCE_DATE_EPOCH" | |
runs-on: ubuntu-latest | |
outputs: | |
source-date-epoch: ${{ steps.log.outputs.source-date-epoch }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- id: log | |
name: Compute SOURCE_DATE_EPOCH | |
run: | | |
# Find latest unix timestamp in awkward-cpp, and the kernel generation files | |
epoch=$( git log -1 --format=%at -- awkward-cpp kernel-specification.yml kernel-test-data.json ) | |
echo "source-date-epoch=$epoch" >> $GITHUB_OUTPUT | |
make_sdist: | |
name: Make SDist | |
runs-on: ubuntu-latest | |
needs: [determine-source-date-epoch] | |
env: | |
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Prepare build files | |
run: pipx run nox -s prepare | |
- name: Build awkward-cpp sdist | |
run: pipx run build --sdist awkward-cpp | |
- name: Check metadata | |
run: pipx run twine check awkward-cpp/dist/* | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: awkward-sdist | |
path: awkward-cpp/dist/*.tar.gz | |
build_wheels: | |
needs: [determine-source-date-epoch] | |
name: "Wheel: ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }} with ${{ matrix.build }}" | |
runs-on: ${{ matrix.os }} | |
env: | |
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
arch: [auto64] | |
build: ["cp", "pp"] | |
include: | |
- os: macos-latest | |
type: "Universal" | |
arch: universal2 | |
build: "cp" | |
- os: windows-latest | |
arch: auto64 | |
build: "cp" | |
- os: windows-latest | |
arch: auto32 | |
build: "cp{38,39}-" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Prepare build files | |
run: pipx run nox -s prepare | |
- uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: "${{ matrix.build }}*" | |
CIBW_ARCHS: ${{ matrix.arch }} | |
with: | |
config-file: cibuildwheel.toml | |
package-dir: awkward-cpp | |
- name: Check metadata | |
shell: python | |
run: | | |
import subprocess, glob | |
subprocess.run( | |
["pipx", "run", "twine", "check", *glob.glob("wheelhouse/*.whl")], | |
check=True | |
) | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: awkward-wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.build }} | |
path: wheelhouse/*.whl | |
build_alt_wheels: | |
needs: [determine-source-date-epoch] | |
name: "Wheel: ${{ matrix.python }} on ${{ matrix.arch }}" | |
runs-on: ubuntu-latest | |
env: | |
SOURCE_DATE_EPOCH: ${{ needs.determine-source-date-epoch.outputs.source-date-epoch }} | |
strategy: | |
matrix: | |
python: [38, 39, 310, 311, 312] | |
arch: [aarch64] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Python 3.10 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Prepare build files | |
run: pipx run nox -s prepare | |
- uses: docker/[email protected] | |
- uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: cp${{ matrix.python }}-* | |
CIBW_ARCHS: ${{ matrix.arch }} | |
with: | |
config-file: cibuildwheel.toml | |
package-dir: awkward-cpp | |
- name: Check metadata | |
shell: python | |
run: | | |
import subprocess, glob | |
subprocess.run( | |
["pipx", "run", "twine", "check", *glob.glob("wheelhouse/*.whl")], | |
check=True | |
) | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: awkward-wheels-${{ matrix.arch }}-py${{ matrix.python }} | |
path: wheelhouse/*.whl | |
upload_all: | |
needs: [build_wheels, build_alt_wheels, make_sdist] | |
runs-on: ubuntu-latest | |
if: inputs.publish-pypi | |
permissions: | |
id-token: write | |
environment: | |
name: "pypi" | |
url: "https://pypi.org/project/awkward-cpp/" | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: "awkward*" | |
path: dist | |
- uses: pypa/[email protected] |