Skip to content

Publish rust project on pip to make it simpler to deploy dora node on different machine without requiring installing cargo #431

Publish rust project on pip to make it simpler to deploy dora node on different machine without requiring installing cargo

Publish rust project on pip to make it simpler to deploy dora node on different machine without requiring installing cargo #431

Workflow file for this run

# This file has been originally generated by maturin v0.14.17
# To update, you can check
#
# maturin generate-ci github --zig
#
# But note that some manual modification has been done.
# Check the diffs to make sure that you haven't broken anything.
name: pip-release
on:
release:
types:
- "published"
workflow_dispatch:
push:
branches:
- main
pull_request:
permissions:
contents: write
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-20.04
# target: s390x
# - runner: ubuntu-20.04
# target: ppc64le
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.8
- uses: Swatinem/rust-cache@v2
with:
cache-provider: buildjet
# only save caches for `main` branch
save-if: ${{ github.ref == 'refs/heads/main' }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --zig -i 3.8
manylinux: manylinux_2_28
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true
musllinux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-20.04
target: x86_64
- runner: ubuntu-20.04
target: x86
- runner: ubuntu-22.04
target: aarch64
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -i 3.8
sccache: "true"
manylinux: musllinux_1_2
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true
musleabi:
runs-on: ubuntu-22.04
strategy:
matrix:
platform:
[
{
target: "armv7-unknown-linux-musleabihf",
image_tag: "armv7-musleabihf",
},
]
repository:
- path: apis/python/node
- path: binaries/cli
container:
image: docker://messense/rust-musl-cross:${{ matrix.platform.image_tag }}
env:
CFLAGS_armv7_unknown_linux_musleabihf: "-mfpu=vfpv3-d16"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build Wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
manylinux: auto
container: off
args: --release -o dist -i 3.8
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v3
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true
windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.8
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -i 3.8
sccache: "true"
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true
macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-12
target: x86_64
- runner: macos-14
target: aarch64
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist -i 3.8
sccache: "true"
working-directory: ${{ matrix.repository.path }}
- name: Upload wheels
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: ${{ matrix.repository.path }}/dist
- name: Upload to release
if: github.event_name == 'release'
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ matrix.repository.path }}/dist/*
tag: ${{ github.ref }}
file_glob: true
sdist:
runs-on: ubuntu-22.04
strategy:
matrix:
repository:
- path: apis/python/node
- path: binaries/cli
steps:
- uses: actions/checkout@v3
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist -i 3.8
working-directory: ${{ matrix.repository.path }}
- name: Upload sdist
if: github.event_name == 'release'
uses: actions/upload-artifact@v3
with:
name: wheels
path: ${{ matrix.repository.path }}/dist
release:
name: Release
runs-on: ubuntu-22.04
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')
needs: [linux, musllinux, musleabi, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v4
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_PASS }}
with:
command: upload
args: --non-interactive --skip-existing wheels-*/*