Make node hub CI/CD cross platform #535
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
# 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-22.04 | |
# target: s390x | |
# - runner: ubuntu-22.04 | |
# target: ppc64le | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-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: ${{ matrix.repository.name }}-linux-${{ matrix.platform.target }} | |
path: ${{ matrix.repository.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 | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-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: ${{ matrix.repository.name }}-musllinux-${{ matrix.platform.target }} | |
path: ${{ matrix.repository.path }}/dist | |
musleabi: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
platform: | |
[ | |
{ | |
target: "armv7-unknown-linux-musleabihf", | |
image_tag: "armv7-musleabihf", | |
}, | |
] | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-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: ${{ matrix.repository.name }}-musllinux-${{ matrix.platform.target }} | |
path: ${{ matrix.repository.path }}/dist | |
windows: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: windows-latest | |
target: x64 | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-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: ${{ matrix.repository.name }}-windows-${{ matrix.platform.target }} | |
path: ${{ matrix.repository.path }}/dist | |
macos: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: macos-12 | |
target: x86_64 | |
- runner: macos-12 | |
target: aarch64 | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-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: ${{ matrix.repository.name }}-macos-${{ matrix.platform.target }} | |
path: ${{ matrix.repository.path }}/dist | |
sdist: | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-cli | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
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 == 'workflow_dispatch' || github.event_name == 'release' && startsWith(github.ref, 'refs/tags/') | |
needs: [linux, musllinux, musleabi, windows, macos, sdist] | |
strategy: | |
matrix: | |
repository: | |
- path: apis/python/node | |
name: dora-node-api | |
- path: binaries/cli | |
name: dora-rs-cli | |
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 ${{ matrix.repository.name }}-*/* |