Skip to content

Update version to 0.27.5. #23

Update version to 0.27.5.

Update version to 0.27.5. #23

name: Release PyPI deck
# Publishes `net-deck` to PyPI — the `net-deck` Rust binary
# packaged as a maturin-built wheel (`bindings = "bin"`). Sibling
# of `release-pypi-cli.yml`; see that file's header for the design
# notes — the two workflows are deliberately parallel.
#
# Tag schema: `deck-v<semver>`.
#
# Authentication: PyPI Trusted Publishing — `pypi` environment +
# `id-token: write`. Configure on PyPI under Account → Publishing:
# - PyPI project name: net-deck
# - Owner: ai-2070
# - Repository: net
# - Workflow: release-pypi-deck.yml
# - Environment: pypi
on:
push:
tags:
- "deck-v*"
workflow_dispatch:
inputs:
tag:
description: "Tag to release"
required: true
env:
CARGO_TERM_COLOR: always
jobs:
linux:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: "true"
manylinux: 2_28
before-script-linux: |
export CFLAGS_aarch64_unknown_linux_gnu="-D__ARM_ARCH=8"
working-directory: net/crates/net/deck/python
- name: Upload wheels
uses: actions/upload-artifact@v7
with:
name: wheels-linux-${{ matrix.target }}
path: net/crates/net/deck/python/dist
linux-musl:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Build musllinux wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: "true"
manylinux: musllinux_1_2
working-directory: net/crates/net/deck/python
- name: Upload wheels
uses: actions/upload-artifact@v7
with:
name: wheels-musllinux-${{ matrix.target }}
path: net/crates/net/deck/python/dist
macos:
runs-on: macos-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: "true"
working-directory: net/crates/net/deck/python
- name: Upload wheels
uses: actions/upload-artifact@v7
with:
name: wheels-macos-${{ matrix.target }}
path: net/crates/net/deck/python/dist
windows:
strategy:
matrix:
include:
- runner: windows-latest
target: x64
py-arch: x64
- runner: windows-11-arm
target: aarch64
py-arch: arm64
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
architecture: ${{ matrix.py-arch }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: "true"
working-directory: net/crates/net/deck/python
- name: Upload wheels
uses: actions/upload-artifact@v7
with:
name: wheels-windows-${{ matrix.target }}
path: net/crates/net/deck/python/dist
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
working-directory: net/crates/net/deck/python
- name: Upload sdist
uses: actions/upload-artifact@v7
with:
name: wheels-sdist
path: net/crates/net/deck/python/dist
publish:
needs: [linux, linux-musl, macos, windows, sdist]
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v8
with:
pattern: wheels-*
merge-multiple: true
path: dist
- name: List distributions
run: ls -la dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
# PEP 740 attestations sign each wheel via sigstore and
# upload the entry to rekor.sigstore.dev. That public
# transparency log is an external dependency outside our
# control; when it 502s / drops the connection mid-request
# it blocks the whole release even though the wheels and
# the Trusted-Publishing (OIDC) path are fine. Disabled so
# a Rekor outage can't gate a release. Re-enable
# (`attestations: true`, the action default) once sigstore
# reliability is no longer a release risk — Trusted
# Publishing via `id-token: write` is unaffected either way.
attestations: false