Skip to content

Commit

Permalink
ci: simplify python wheels (#573)
Browse files Browse the repository at this point in the history
- Closes #560
  • Loading branch information
gadomski authored Dec 18, 2024
1 parent 86a7cbf commit 3e736d0
Show file tree
Hide file tree
Showing 2 changed files with 140 additions and 116 deletions.
157 changes: 140 additions & 17 deletions .github/workflows/python-cli.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Python CLI
name: PyPI

on:
push:
Expand All @@ -14,17 +14,140 @@ concurrency:
cancel-in-progress: true

jobs:
build-wheels:
uses: ./.github/workflows/wheels.yml
with:
manifest-path: crates/cli/Cargo.toml
linux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: armv7
- runner: ubuntu-latest
target: ppc64le
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter --manifest-path crates/cli/Cargo.toml
sccache: "true"
manylinux: auto
# https://github.com/Intreecom/scyllapy/blob/05fdab32dd7468c26533de5fdfe9627fa3e38445/.github/workflows/release.yaml#L37-L50
before-script-linux: |
# If we're running on rhel centos, install needed packages.
if command -v yum &> /dev/null; then
yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic
# If we're running on i686 we need to symlink libatomic
# in order to build openssl with -latomic flag.
if [[ ! -d "/usr/lib64" ]]; then
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so
fi
else
# If we're running on debian-based system.
apt update -y && apt-get install -y libssl-dev openssl pkg-config
fi
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist

musllinux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter --manifest-path crates/cli/Cargo.toml
sccache: "true"
manylinux: musllinux_1_2
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist

windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
- runner: windows-latest
target: x86
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter --manifest-path crates/cli/Cargo.toml
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist

macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-13
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter --manifest-path crates/cli/Cargo.toml
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist

sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Rust cache
uses: Swatinem/rust-cache@v2
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
Expand All @@ -33,28 +156,28 @@ jobs:
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: pypi_files_sdist
name: wheels-sdist
path: dist

release:
name: Release
runs-on: ubuntu-latest
if: success() && startsWith(github.ref, 'refs/tags/')
needs:
- build-wheels
- sdist
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
needs: [linux, musllinux, macos, sdist]
environment:
name: pypi
url: https://pypi.org/p/stacrs-cli
permissions:
id-token: write
contents: write
attestations: write
steps:
- uses: actions/download-artifact@v4
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
pattern: pypi_files_*
merge-multiple: true
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
subject-path: "wheels-*/*"
- uses: PyO3/maturin-action@v1
with:
command: upload
args: --non-interactive --skip-existing stacrs-cli-*
args: --non-interactive --skip-existing wheels-*/*
99 changes: 0 additions & 99 deletions .github/workflows/wheels.yml

This file was deleted.

0 comments on commit 3e736d0

Please sign in to comment.