Skip to content

Publish nostr-protocol to PyPI #65

Publish nostr-protocol to PyPI

Publish nostr-protocol to PyPI #65

name: Publish nostr-protocol to PyPI
on:
workflow_dispatch:
inputs:
dry-run:
description: "Compile without publish to PyPI"
type: boolean
default: false
required: true
jobs:
build-linux-x86_64:
name: "Build manylinux_2_28_x86_64 wheel"
runs-on: ubuntu-20.04
strategy:
matrix:
python:
- cp39-cp39
- cp310-cp310
- cp311-cp311
- cp312-cp312
defaults:
run:
working-directory: bindings/nostr-ffi/bindings-python
container:
image: quay.io/pypa/manylinux_2_28_x86_64
env:
PYBIN: "/opt/python/${{ matrix.python }}/bin"
steps:
- name: "Checkout"
uses: actions/checkout@v3
# Needed because inside container
- name: "Setup Rust"
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: "Generate nostr.py and binaries"
run: bash ./scripts/generate-linux-x86_64.sh
- name: "Build wheel"
run: ${PYBIN}/python setup.py bdist_wheel --plat-name manylinux_2_28_x86_64 --verbose
- uses: actions/upload-artifact@v4
with:
name: nostr_protocol-manylinux_2_28_x86_64-${{ matrix.python }}
path: /home/runner/work/nostr/nostr/bindings/nostr-ffi/bindings-python/dist/*.whl
build-linux-aarch64:
name: "Build manylinux_2_31 aarch64 wheel"
runs-on: ubuntu-20.04
strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12"]
defaults:
run:
working-directory: bindings/nostr-ffi/bindings-python
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: "Setup Python"
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install gcc-aarch64-linux-gnu
run: |
sudo apt-get update -y
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: "Generate nostr.py and binaries"
run: bash ./scripts/generate-linux-aarch64.sh
- name: "Build wheel"
run: python3 setup.py bdist_wheel --plat-name manylinux_2_31_aarch64 --verbose
- uses: actions/upload-artifact@v4
with:
name: nostr_protocol-manylinux_2_31_aarch64-${{ matrix.python }}
path: /home/runner/work/nostr/nostr/bindings/nostr-ffi/bindings-python/dist/*.whl
build-macos-arm64:
name: "Build macOS arm64 wheel"
runs-on: macos-13
defaults:
run:
working-directory: bindings/nostr-ffi/bindings-python
strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: "Checkout"
uses: actions/checkout@v3
with:
submodules: true
- name: "Install Python"
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: "Generate nostr.py and binaries"
run: bash ./scripts/generate-macos-arm64.sh
- name: "Build wheel"
# Specifying the plat-name argument is necessary to build a wheel with the correct name,
# see issue #350 for more information
run: python3 setup.py bdist_wheel --plat-name macosx_11_0_arm64 --verbose
- name: "Upload artifacts"
uses: actions/upload-artifact@v4
with:
name: nostr_protocol-macos-arm64-${{ matrix.python }}
path: /Users/runner/work/nostr/nostr/bindings/nostr-ffi/bindings-python/dist/*.whl
build-macos-x86_64:
name: "Build macOS x86_64 wheel"
runs-on: macos-13
defaults:
run:
working-directory: bindings/nostr-ffi/bindings-python
strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: "Checkout"
uses: actions/checkout@v3
with:
submodules: true
- name: "Install Python"
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: "Generate nostr.py and binaries"
run: bash ./scripts/generate-macos-x86_64.sh
- name: "Build wheel"
# Specifying the plat-name argument is necessary to build a wheel with the correct name,
# see issue #350 for more information
run: python3 setup.py bdist_wheel --plat-name macosx_11_0_x86_64 --verbose
- uses: actions/upload-artifact@v4
with:
name: nostr_protocol-macos-x86_64-${{ matrix.python }}
path: /Users/runner/work/nostr/nostr/bindings/nostr-ffi/bindings-python/dist/*.whl
build-windows:
name: "Build Windows wheel"
runs-on: windows-2022
defaults:
run:
working-directory: bindings/nostr-ffi/bindings-python
strategy:
matrix:
python: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: "Checkout"
uses: actions/checkout@v3
with:
submodules: true
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: "Generate nostr.py and binaries"
run: bash ./scripts/generate-windows.sh
- name: "Build wheel"
run: python setup.py bdist_wheel --verbose
- name: "Upload artifacts"
uses: actions/upload-artifact@v4
with:
name: nostr_protocol-win-${{ matrix.python }}
path: D:\a\nostr\nostr\bindings\nostr-ffi\bindings-python\dist\*.whl
publish-pypi:
name: "Publish on PyPI"
runs-on: ubuntu-20.04
defaults:
run:
working-directory: bindings/nostr-ffi/bindings-python
needs: [build-linux-x86_64, build-linux-aarch64, build-macos-arm64, build-macos-x86_64, build-windows]
if: github.event.inputs.dry-run == 'false'
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: "Download artifacts in dist/ directory"
uses: actions/download-artifact@v4
with:
path: dist/
- name: "Publish on PyPI"
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: dist/*/