# This file is autogenerated by maturin v1.8.4 # To update, run # # maturin generate-ci github # name: CI on: push: branches: - main tags: - '*' pull_request: workflow_dispatch: permissions: contents: read jobs: linux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - runner: ubuntu-latest target: x86_64-unknown-linux-gnu steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: 3.x - name: Cache Rust and sccache uses: actions/cache@v4 with: path: | ${{ runner.temp }}/cargo ${{ runner.temp }}/rustup ~/.cache/pip ~/.cache/pip-wheel ~/.cache/sccache key: rust-cache-${{ matrix.platform.target }}-${{ hashFiles('**/Cargo.lock') }}-${{ runner.os }}-${{ github.ref }} restore-keys: | rust-cache-${{ matrix.platform.target }}-${{ runner.os }}- rust-cache-${{ runner.os }}- - name: Install Rust (rustup) if needed run: | set -e export RUSTUP_HOME="${{ runner.temp }}/rustup" export CARGO_HOME="${{ runner.temp }}/cargo" export PATH="$CARGO_HOME/bin:$PATH" if ! command -v rustc >/dev/null 2>&1; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source "$CARGO_HOME/env" 2>/dev/null || true rustup default nightly rustup target add x86_64-unknown-linux-gnu rustup target add x86_64-pc-windows-msvc fi shell: bash - name: Install sccache and maturin run: | export RUSTUP_HOME="${{ runner.temp }}/rustup" export CARGO_HOME="${{ runner.temp }}/cargo" export PATH="$CARGO_HOME/bin:$PATH" python -m pip install --upgrade pip pip install maturin cargo-xwin if ! command -v sccache >/dev/null 2>&1; then cargo install sccache || pip install sccache fi shell: bash - name: Build wheels run: | export CARGO_HOME="${{ runner.temp }}/cargo" export PATH="$CARGO_HOME/bin:$PATH" maturin sdist --out dist maturin build --release --out dist --target x86_64-unknown-linux-gnu maturin build --release --out dist --target x86_64-pc-windows-msvc - name: Upload wheels uses: actions/upload-artifact@v3.2.2 with: path: dist/kmeans-* release: name: Release runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [linux] permissions: # Use to sign the release artifacts id-token: write # Used to upload release artifacts contents: write # Used to generate artifact attestation attestations: write steps: - uses: actions/download-artifact@v4 - name: Generate artifact attestation uses: actions/attest-build-provenance@v2 with: subject-path: 'wheels-*/*' - name: Publish to PyPI if: ${{ startsWith(github.ref, 'refs/tags/') }} uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/*