Skip to content

Release v0.1.1

Release v0.1.1 #2

Workflow file for this run

name: Release
on:
push:
tags:
- 'v[0-9]+*'
workflow_dispatch:
env:
GH_TOKEN: ${{ github.token }}
jobs:
create-release:
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
steps:
- uses: actions/checkout@v4
- name: Create new release
run: |
gh release create -d v${GITHUB_REF_NAME#v}
capi-linux:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64-unknown-linux-gnu]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install cargo-c
run: cargo install cargo-c
- name: Compile library
run: |
cd mchep_capi
export CARGO_C_INSTALL_PREFIX=$(pwd)/prefix
cargo cinstall --destdir=prefix --libdir=lib --library-type=cdylib --locked --release --prefix=/ --target=${{ matrix.target }} --verbose
cd prefix
tar czf ../../mchep_capi-${{ matrix.target }}.tar.gz .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mchep_capi-${{ matrix.target }}
path: mchep_capi-${{ matrix.target }}.tar.gz
capi-macos:
runs-on: macos-latest
strategy:
matrix:
target: [x86_64-apple-darwin, aarch64-apple-darwin]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
brew install open-mpi
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install cargo-c
run: cargo install cargo-c
- name: Compile library
run: |
cd mchep_capi
export CARGO_C_INSTALL_PREFIX=$(pwd)/prefix
cargo cinstall --destdir=prefix --libdir=lib --library-type=cdylib --locked --release --prefix=/ --target=${{ matrix.target }} --verbose
cd prefix
tar czf ../../mchep_capi-${{ matrix.target }}.tar.gz .
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mchep_capi-${{ matrix.target }}
path: mchep_capi-${{ matrix.target }}.tar.gz
wheels-linux:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64]
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path mchep_pyapi/Cargo.toml
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
path: dist
wheels-macos:
strategy:
matrix:
include:
- os: macos-15-intel
target: x86_64
- os: macos-15
target: aarch64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path mchep_pyapi/Cargo.toml
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: dist
wheels-windows:
runs-on: windows-latest
strategy:
matrix:
target: [x64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter --manifest-path mchep_pyapi/Cargo.toml
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}
path: dist
wheels-sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist --manifest-path mchep_pyapi/Cargo.toml
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist
publish-release:
needs: [capi-macos, capi-linux]
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create new release
run: |
version=${GITHUB_REF_NAME#v}
gh release edit v${version} -n ""
find artifacts -name 'mchep_capi*' ! -name '*.whl' -type f -exec gh release upload v${version} {} +
gh release edit v${version} --draft=false
publish-crates:
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libopenmpi-dev
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Publish all crates
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
cargo publish -p mchep
cargo publish -p mchep_capi
cargo publish -p mchep_pyapi
release-wheels:
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs:
- wheels-linux
- wheels-macos
- wheels-sdist
- wheels-windows
steps:
- uses: actions/download-artifact@v4
with:
pattern: "wheels-*"
merge-multiple: true
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
with:
command: upload
args: --skip-existing *