aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2025-10-14 16:10:19 +0800
committerHsiangNianian <i@jyunko.cn>2025-10-14 16:10:19 +0800
commit02c240c3be438feddd43a1f8597b9d64c19ef72e (patch)
treeab86f905d782a97adef192d7b9adf18b9caa647e /.github/workflows/build.yml
parent80764db3054f14eee8f44d4cd4d2784895f17873 (diff)
downloadOneRoll-02c240c3be438feddd43a1f8597b9d64c19ef72e.tar.gz
OneRoll-02c240c3be438feddd43a1f8597b9d64c19ef72e.zip
feat: add new CI workflow for build and release process
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml211
1 files changed, 211 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..d394000
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,211 @@
+# This file is autogenerated by maturin v1.9.6
+# To update, run
+#
+# maturin generate-ci github
+#
+name: build and release
+
+on:
+ push:
+ branches:
+ - main
+ - master
+ tags:
+ - '*'
+ pull_request:
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+jobs:
+ linux:
+ runs-on: ${{ matrix.platform.runner }}
+ strategy:
+ matrix:
+ platform:
+ - runner: ubuntu-22.04
+ target: x86_64
+ - runner: ubuntu-22.04
+ target: x86
+ - runner: ubuntu-22.04
+ target: aarch64
+ - runner: ubuntu-22.04
+ target: armv7
+ - runner: ubuntu-22.04
+ target: s390x
+ - runner: ubuntu-22.04
+ 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
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ manylinux: auto
+ - name: Build free-threaded wheels
+ uses: PyO3/maturin-action@v1
+ with:
+ target: ${{ matrix.platform.target }}
+ args: --release --out dist -i python3.13t
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ manylinux: auto
+ - 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-22.04
+ target: x86_64
+ - runner: ubuntu-22.04
+ target: x86
+ - runner: ubuntu-22.04
+ target: aarch64
+ - runner: ubuntu-22.04
+ 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
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ manylinux: musllinux_1_2
+ - name: Build free-threaded wheels
+ uses: PyO3/maturin-action@v1
+ with:
+ target: ${{ matrix.platform.target }}
+ args: --release --out dist -i python3.13t
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ 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
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ - uses: actions/setup-python@v5
+ with:
+ python-version: 3.13t
+ architecture: ${{ matrix.platform.target }}
+ - name: Build free-threaded wheels
+ uses: PyO3/maturin-action@v1
+ with:
+ target: ${{ matrix.platform.target }}
+ args: --release --out dist -i python3.13t
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ - 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
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ - name: Build free-threaded wheels
+ uses: PyO3/maturin-action@v1
+ with:
+ target: ${{ matrix.platform.target }}
+ args: --release --out dist -i python3.13t
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
+ - 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: Build sdist
+ uses: PyO3/maturin-action@v1
+ with:
+ command: sdist
+ args: --out dist
+ - name: Upload sdist
+ uses: actions/upload-artifact@v4
+ with:
+ name: wheels-sdist
+ path: dist
+
+ release:
+ name: Release
+ runs-on: ubuntu-latest
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
+ needs: [linux, musllinux, windows, macos, sdist]
+ permissions:
+ # Use to sign the release artifacts
+ id-token: write
+ # Used to upload release artifacts
+ contents: write
+ # Used to generate artifact attestation
+ attestations: write
+ steps:
+ - uses: actions/download-artifact@v4
+ - name: Generate artifact attestation
+ uses: actions/attest-build-provenance@v2
+ with:
+ subject-path: 'wheels-*/*'
+ - name: Publish to PyPI
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
+ uses: PyO3/maturin-action@v1
+ env:
+ MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
+ with:
+ command: upload
+ args: --non-interactive --skip-existing wheels-*/*