Build and Publish Python GPU Bindings (linux only) #7
Workflow file for this run
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
name: Build and Publish Python GPU Bindings (linux only) | |
on: | |
# Requires someone to trigger this build script via github workflows | |
# It is required that the codebase is audited by contributors | |
# before triggering to reduce the likelihood of supply chain attacks | |
workflow_dispatch: | |
defaults: | |
run: | |
working-directory: . | |
jobs: | |
linux: | |
runs-on: GPU | |
strategy: | |
matrix: | |
target: [x86_64] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.7 | |
architecture: x64 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly-2023-06-27 | |
override: true | |
components: rustfmt, clippy | |
- name: Set Cargo.toml version to match github tag | |
shell: bash | |
env: | |
RELEASE_TAG: ${{ github.ref_name }} | |
run: | | |
mv Cargo.toml Cargo.toml.orig | |
sed "s/0\\.0\\.0/${RELEASE_TAG//v}/" Cargo.toml.orig >Cargo.toml | |
mv Cargo.lock Cargo.lock.orig | |
sed "s/0\\.0\\.0/${RELEASE_TAG//v}/" Cargo.lock.orig >Cargo.lock | |
- name: Install required libraries | |
shell: bash | |
run: | | |
sudo apt-get update && sudo apt-get install -y openssl pkg-config libssl-dev | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
target: ${{ matrix.target }} | |
manylinux: auto | |
container: off | |
args: --release --out dist --features python-bindings,icicle | |
- name: Install built wheel | |
if: matrix.target == 'x86_64' | |
run: | | |
pip install ezkl --no-index --find-links dist --force-reinstall | |
python -c "import ezkl" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v3 | |
with: | |
name: wheels | |
path: dist | |
pypi-publish: | |
name: Uploads release to PyPI | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
if: "startsWith(github.ref, 'refs/tags/')" | |
# TODO: Uncomment if linux-cross is working | |
# needs: [ macos, windows, linux, linux-cross, musllinux, musllinux-cross ] | |
needs: [linux] | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: wheels | |
- name: List Files | |
run: ls -R | |
# Both publish steps will fail if there is no trusted publisher setup | |
# On failure the publish step will then simply continue to the next one | |
# publishes to PyPI | |
- name: Publish package distributions to PyPI | |
continue-on-error: true | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
packages-dir: ./ | |
# publishes to TestPyPI | |
- name: Publish package distribution to TestPyPI | |
continue-on-error: true | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
packages-dir: ./ |