name: CI on: [workflow_dispatch] permissions: contents: read jobs: publish_pytest: uses: ./.github/workflows/pytest.yml publish_cargo_test: uses: ./.github/workflows/cargo_test.yml pypi_publish: needs: [ publish_pytest, publish_cargo_test ] name: Publish (pypi.org) runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Restore cache uses: actions/cache/restore@v4 with: path: | ~/.cache/pip ~/.cache/pip-wheel ~/.cache/sccache ~/.cache/cargo-xwin ~/.cargo ~/.osxcross key: cache-ubuntu-maturin-cross-compile - name: Install llvm run: | if ! command -v llvm-dlltool >/dev/null 2>&1; then sudo apt update sudo apt install -y llvm fi shell: bash - name: Install clang run: | if ! command -v clang >/dev/null 2>&1; then sudo apt update sudo apt install -y clang fi shell: bash - name: Install Rust run: | export PATH="$HOME/.cargo/bin:$PATH" if ! command -v rustc >/dev/null 2>&1; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y else rustup update fi rustup default stable shell: bash - name: Install sccache and maturin run: | export PATH="$HOME/.cargo/bin:$PATH" python -m pip install --upgrade pip pip install maturin ziglang if ! command -v sccache >/dev/null 2>&1; then cargo install sccache || pip install sccache fi shell: bash - name: Install xwin run: | export PATH="$HOME/.cargo/bin:$PATH" if ! command -v cargo-xwin >/dev/null 2>&1; then cargo install cargo-xwin || pip install cargo-xwin cargo xwin cache xwin fi shell: bash - name: Install osxcross run: | export PATH="$HOME/.osxcross/bin:$PATH" if ! command -v osxcross >/dev/null 2>&1; then wget ${{ secrets.OSXCROSS_LINK }} -O osxcross.tar.gz tar -xzf osxcross.tar.gz -C ~/ mv ~/osxcross ~/.osxcross fi - name: Build wheels run: | export PATH="$HOME/.cargo/bin:$HOME/.osxcross/bin:$PATH" maturin sdist --out dist rustup target add x86_64-unknown-linux-gnu maturin build --release --out dist --target x86_64-unknown-linux-gnu rustup target add aarch64-unknown-linux-gnu maturin build --release --out dist --target aarch64-unknown-linux-gnu --zig rustup target add x86_64-pc-windows-msvc maturin build --release --out dist --target x86_64-pc-windows-msvc rustup target add aarch64-pc-windows-msvc maturin build --release --out dist --target aarch64-pc-windows-msvc rustup target add x86_64-apple-darwin maturin build --release --out dist --target x86_64-apple-darwin --zig rustup target add aarch64-apple-darwin maturin build --release --out dist --target aarch64-apple-darwin --zig # - name: Upload wheels # uses: https://github.com/christopherHX/gitea-upload-artifact@v4 # with: # path: dist - name: Store cache uses: actions/cache/save@v4 with: path: | ~/.cache/pip ~/.cache/pip-wheel ~/.cache/sccache ~/.cache/cargo-xwin ~/.cargo ~/.osxcross key: cache-ubuntu-maturin-cross-compile - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API_TOKEN }} env: GITHUB_WORKFLOW_REF: 1.10.1