maturin-action
GitHub Action,用于安装和运行自定义的 maturin 命令,内置支持交叉编译。
使用方法
- uses: PyO3/maturin-action@v1
with:
command: build
args: --release
要为您的项目生成 GitHub Actions 工作流,请尝试使用 maturin generate-ci github
命令。
mkdir -p .github/workflows
maturin generate-ci github > .github/workflows/CI.yml
示例
如果您想为常见的 Python 版本、操作系统和 CPU 架构构建并发布 Python 扩展模块,请参考以下示例:
- messense/crfs-rs:PyO3 abi3 wheel 示例
- messense/rjmespath-rs:使用 Rust nightly 工具链的 PyO3 abi3 wheel 示例
- milesgranger/pyrus-cramjam:PyO3 非 abi3 wheel 示例
- messense/auditwheel-symbols:使用 MUSL libc 的
bin
绑定示例 - adriangb/graphlib2:PyO3 abi3 wheel
- pydantic/pydantic-core:支持 PyPy 的 PyO3 非 abi3 wheel 示例
- messense/py-dissimilar:支持 PyPy 的 PyO3 非 abi3 wheel 示例
输入参数
名称 | 必填 | 描述 | 类型 | 默认值 |
---|---|---|---|---|
command | 否 | 要运行的 maturin 命令 | 字符串 | build |
args | 否 | 传递给 maturin 子命令的参数 | 字符串 | |
maturin-version | 否 | 要使用的 maturin 版本。必须匹配已标记的发布版本 | 字符串 | latest |
manylinux | 否 | 控制 Linux 上的 manylinux 平台标签,其他平台忽略,使用 auto 构建最低兼容版本 | 字符串 | publish 命令默认为 auto |
target | 否 | Cargo 的 --target 选项 | 字符串 | |
container | 否 | manylinux Docker 容器镜像名称 | 字符串 | 默认取决于 target 和 manylinux 选项,设置为 off 可禁用 manylinux Docker 构建,改为在主机上构建。 |
docker-options | 否 | 额外的 Docker 运行选项,用于传递环境变量等 | 字符串 | |
rust-toolchain | 否 | Rust 工具链名称 | 字符串 | Docker 构建默认为 stable |
rustup-components | 否 | Rustup 组件 | 字符串 | 默认为空 |
working-directory | 否 | 运行命令的工作目录 | 字符串 | 默认为仓库根目录 |
sccache | 否 | 启用 sccache 以加快构建速度 | 布尔值 | 默认为 false |
before-script-linux | 否 | 在 Linux 上运行 maturin 命令之前执行的脚本 | 字符串 |
manylinux
Docker 容器
默认情况下,此 action 为支持的架构和 manylinux 版本使用以下容器。
架构 | Manylinux 版本 | 默认容器 | 备注 |
---|---|---|---|
x86_64 | 2010/2_12 | quay.io/pypa/manylinux2010_x86_64:latest | |
x86_64 | 2014/2_17 | quay.io/pypa/manylinux2014_x86_64:latest | |
x86_64 | 2_24 | quay.io/pypa/manylinux_2_24_x86_64:latest | 已弃用 |
x86_64 | 2_28 | quay.io/pypa/manylinux_2_28_x86_64:latest | |
i686 | 2010/2_12 | quay.io/pypa/manylinux2010_i686:latest | |
i686 | 2014/2_17 | quay.io/pypa/manylinux2014_i686:latest | |
i686 | 2_24 | quay.io/pypa/manylinux_2_24_i686:latest | 已弃用 |
aarch64 | 2014/2_17 | ghcr.io/rust-cross/manylinux2014-cross:aarch64 | |
aarch64 | 2_24 | messense/manylinux_2_24-cross:aarch64 | |
aarch64 | 2_28 | ghcr.io/rust-cross/manylinux_2_28-cross:aarch64 | |
armv7l | 2014/2_17 | ghcr.io/rust-cross/manylinux2014-cross:armv7 | |
armv7l | 2_24 | messense/manylinux_2_24-cross:armv7 | |
armv7l | 2_28 | ghcr.io/rust-cross/manylinux_2_28-cross:armv7 | |
ppc64le | 2014/2_17 | ghcr.io/rust-cross/manylinux2014-cross:ppc64le | |
ppc64le | 2_24 | messense/manylinux_2_24-cross:ppc64le | 已弃用 |
ppc64le | 2_28 | ghcr.io/rust-cross/manylinux_2_28-cross:ppc64le | |
ppc64 | 2014/2_17 | ghcr.io/rust-cross/manylinux2014-cross:ppc64 | |
s390x | 2014/2_17 | ghcr.io/rust-cross/manylinux2014-cross:s390x | |
s390x | 2_24 | messense/manylinux_2_24-cross:s390x | 已弃用 |
s390x | 2_28 | ghcr.io/rust-cross/manylinux_2_28-cross:s390x |
您可以通过提供 container
输入来覆盖它。
请注意,如果使用官方 manylinux Docker 镜像用于 x86_64
和 i686
以外的平台,
您需要在使用此 action 之前设置 QEMU,例如
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
- uses: PyO3/maturin-action@v1
with:
command: build
args: --release
请注意,actions/setup-python
action 不会影响 manylinux 构建,因为它是容器化的,
所以如果您想为 Linux 构建特定的 Python 版本,请在 PyO3/maturin-action
的 args
选项中使用 -i pythonX.Y
,例如
- uses: PyO3/maturin-action@v1
with:
args: --release -i python3.10
贡献
代码更改后进行构建:
npm run all
许可证
本作品根据 MIT 许可证发布。许可证副本在 LICENSE 文件中提供。