Python Rust Mix Build
python-rust-mix-build
is a GitHub action that checks if the Python Rust Mix Project passes Build or not.
Table of Contents
Usage
To use this in your own workflow,
- name: Run Build Test
uses: d33p0st/python-rust-mix-build@v1
with:
python-version: 3.9 # set python version. default: 3.12
miniconda-version: # set miniconda version. default: "latest"
Add the above snippet in your workflow.
The complete yaml
file would look something like this:
name: Build Test
on: [push]
jobs:
Test:
runs-on: ubuntu-latest # multiple can be added
steps:
- name: Checkout Repo
uses: actions/checkout@v3
- name: Run Build Test
uses: d33p0st/python-rust-mix-build@v1
with:
python-version: 3.9 # set python version. default: 3.12
miniconda-version: # set miniconda version. default: "latest"
Requirements
For this action to work on your Python-Rust mix project, make sure you have Cargo.toml
and pyproject.toml
intact and follows the proper rules.
For Example, the following entries should be there in your Cargo.toml
[lib]
crate-type = ["cdylib"]
[build-dependencies]
cc = "1.0"
Note: This will not work in pure rust or pure python projects. Make sure you are using pyo3
crate in rust to create binaries that can be called from a python script or file. Additionally, maturin
is being used to test the build which means pyproject.toml
should have an entry about it.
A demo pyproject.toml
and Cargo.toml
is provided here.
python-version
: specify the python version. Default is 3.12
miniconda-version
: specify the miniconda version to use as maturin
needs either venv or miniconda to work. Default is "latest"
-
replace
: Takes boolean values. Default is false
. This builds and pushes that built binary back to the repository.
For this to work, add an addition line to your workflow file:
GH_TOKEN
: This takes GITHUB API TOKEN as input, if permissions: write-all
line is provided, The action will automatically get the GITHUB TOKEN from your account. However, If not provided, GH_TOKEN
needs to be set with proper permissions.
Caution
You need to pull auto-generated commits in case of using replace
input, Else your repo will mess up.
Issues
Feel free to submit any issues here.
Pull Requests
Create any relevant pull requests here.