Skip to content

feat: store benchmarks in s3 (#1650) #795

feat: store benchmarks in s3 (#1650)

feat: store benchmarks in s3 (#1650) #795

Workflow file for this run

name: Release-plz
permissions:
pull-requests: write
contents: write
on:
push:
branches:
- develop
jobs:
# Release unpublished packages.
release-plz-release:
name: Release-plz release
runs-on: ubuntu-latest
if: "startsWith(github.event.head_commit.message, 'chore: release')"
outputs:
releases_created: ${{ steps.run-release-plz.outputs.releases_created }} # Expose this step output as a job output
steps:
- uses: actions/checkout@v4
with:
# Needed to pull full commit history for release version number inference
fetch-depth: 0
- uses: ./.github/actions/cleanup
- uses: ./.github/actions/setup-rust
- uses: spiraldb/actions/.github/actions/[email protected]
- name: Run release-plz
id: run-release-plz
uses: MarcoIeni/[email protected]
with:
command: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
# Create a PR with the new versions and changelog, preparing the next release.
release-plz-pr:
name: Release-plz PR
runs-on: ubuntu-latest
concurrency:
group: release-plz-${{ github.ref }}
cancel-in-progress: false
steps:
- uses: actions/checkout@v4
with:
# Needed to pull full commit history for release version number inference
fetch-depth: 0
- uses: ./.github/actions/cleanup
- uses: ./.github/actions/setup-rust
- uses: spiraldb/actions/.github/actions/[email protected]
- name: Run release-plz
uses: MarcoIeni/[email protected]
with:
command: release-pr
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
macos:
needs: release-plz-release
if: ${{ needs.release-plz-release.outputs.releases_created == 'true' }}
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/cleanup
- uses: ./.github/actions/setup-rust
- uses: spiraldb/actions/.github/actions/[email protected]
- name: rust-toolchain
shell: bash
run: echo "version=$(cat rust-toolchain.toml | grep channel | awk -F'\"' '{print $2}')" >> $GITHUB_OUTPUT
- name: Build wheels - x86_64
uses: PyO3/maturin-action@v1
with:
rust-toolchain: ${{ steps.rust-toolchain.version }}
working-directory: pyvortex
target: x86_64
args: --release --interpreter python3.10 --sdist
- name: Build wheels - aarch64
uses: PyO3/maturin-action@v1
with:
rust-toolchain: ${{ steps.rust-toolchain.version }}
working-directory: pyvortex
target: aarch64 # NB: aarch64 becomes arm64 in the wheel's platform tag.
args: --release --interpreter python3.10
- name: test wheel
run: |
set -ex
ls -al target/wheels
echo removing linux_x86_64 if it exists because PyPI will reject the package if it is present
rm -f target/wheels/*linux_x86_64.whl
uv run pip install --no-deps --force-reinstall vortex-array --no-index --find-links target/wheels
cd pyvortex/test
uv run pytest
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: osx-wheels
path: target/wheels
linux:
needs: release-plz-release
if: ${{ needs.release-plz-release.outputs.releases_created == 'true' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# maturin-action builds in an isolated container; setting RUSTC_WRAPPER=sccache triggers failure
# because sccache is not installed in the container.
#
# - uses: ./.github/actions/setup-rust
- uses: spiraldb/actions/.github/actions/[email protected]
- name: rust-toolchain
shell: bash
run: echo "version=$(cat rust-toolchain.toml | grep channel | awk -F'\"' '{print $2}')" >> $GITHUB_OUTPUT
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
rust-toolchain: ${{ steps.rust-toolchain.version }}
working-directory: pyvortex
target: x86_64
manylinux: auto
args: --release --interpreter python3.10
- name: test wheel
run: |
set -ex
ls -al target/wheels
echo removing linux_x86_64 if it exists because PyPI will reject the package if it is present
rm -f target/wheels/*linux_x86_64.whl
uv run pip install --no-deps --force-reinstall vortex-array --no-index --find-links target/wheels
cd pyvortex/test
uv run pytest
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: linux-wheels
path: target/wheels
release:
needs: [ release-plz-release, macos, linux ]
if: ${{ needs.release-plz-release.outputs.releases_created == 'true' }}
runs-on: ubuntu-latest
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
environment:
name: push-to-pypi
url: https://pypi.org/p/vortex-array
steps:
- uses: actions/download-artifact@v4
with:
# https://github.com/actions/download-artifact?tab=readme-ov-file#download-all-artifacts
# "To download them to the same directory:"
path: dist/
merge-multiple: true
- name: Display structure of downloaded files
run: ls -R dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
attestations: true
verbose: true