Skip to content

Merge pull request #2882 from finos/fix-filter-uaf #783

Merge pull request #2882 from finos/fix-filter-uaf

Merge pull request #2882 from finos/fix-filter-uaf #783

Workflow file for this run

# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
# ┃ Copyright (c) 2017, the Perspective Authors. ┃
# ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
# ┃ This file is part of the Perspective library, distributed under the terms ┃
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
name: Build Status
on:
push:
branches:
- master
tags:
- v*
paths-ignore:
- AUTHORS
- CHANGELOG.md
- CONTRIBUTING.md
- LICENSE
- README.md
- binder/
- docs/
- examples/
- rust/perspective-python/README.md
pull_request:
branches:
- master
workflow_dispatch:
inputs:
ci-full:
description: "Run Full CI"
required: false
type: boolean
default: false
ci-skip-cache:
description: "Omit Cache from CI run"
required: false
type: boolean
default: false
ci-skip-python:
description: "Skip Python components of CI"
required: false
type: boolean
default: false
ci-include-windows:
description: "Include Windows (Python) components of CI"
required: false
type: boolean
default: false
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
# , . . .-,--.
# ) . ,-. |- ,-. ,-. ,-| ' | \ ,-. ,-. ,-.
# / | | | | ,-| | | | | , | / | | | `-.
# `--' ' ' ' `' `-^ ' ' `-^ `-^--' `-' `-' `-'
#
lint_and_docs:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
python-version:
- 3.9
node-version: [20.x]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
id: init-step
uses: ./.github/actions/install-deps
with:
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: Metadata Build
run: pnpm run build --ci
env:
PACKAGE: "perspective-metadata"
- name: Lint
run: pnpm run lint
# - name: Docs Build
# run: pnpm run docs
- uses: actions/upload-artifact@v4
with:
name: perspective-metadata
path: |
rust/perspective-server/cpp/
rust/perspective-server/cmake/
rust/perspective-client/src/
rust/perspective-client/docs/
rust/perspective-js/src/ts/
rust/perspective-viewer/src/ts/
rust/perspective-python/LICENSE_THIRDPARTY_cargo.yml
# ,-,---. . . ,-_/ .---. .
# '|___/ . . . | ,-| ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# ,| \ | | | | | | | ,-| | / ,-| \ | | | | | |
# `-^---' `-^ ' `' `-^ | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
build_js:
runs-on: ${{ matrix.os }}
needs: [lint_and_docs]
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
python-version:
- 3.9
node-version: [20.x]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- uses: actions/download-artifact@v4
with:
name: perspective-metadata
path: rust/
- name: Initialize Build
id: init-step
uses: ./.github/actions/install-deps
with:
clean: "true"
python: "false"
playwright: "true"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: WebAssembly Build
run: pnpm run build --ci
env:
PACKAGE: "perspective-cpp,perspective,perspective-viewer,perspective-viewer-datagrid,perspective-viewer-d3fc,perspective-viewer-openlayers,perspective-workspace,perspective-cli"
# PSP_USE_CCACHE: 1
- uses: actions/upload-artifact@v4
with:
name: perspective-js-dist
path: |
rust/perspective-js/dist/
rust/perspective-viewer/dist
packages/perspective-jupyterlab/dist/
packages/perspective-viewer-d3fc/dist
packages/perspective-viewer-datagrid/dist
packages/perspective-viewer-openlayers/dist
packages/perspective-esbuild-plugin/dist
packages/perspective-webpack-plugin/dist
packages/perspective-cli/dist
packages/perspective-workspace/dist
# ,-,---. . . .-,--. . .
# '|___/ . . . | ,-| '|__/ . . |- |-. ,-. ,-.
# ,| \ | | | | | | ,| | | | | | | | | |
# `-^---' `-^ ' `' `-^ `' `-| `' ' ' `-' ' '
# /|
# `-'
build_python:
runs-on: ${{ matrix.os }}
needs: [lint_and_docs]
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-13
- windows-2022
arch:
- aarch64
- x86_64
python-version:
- 3.9
node-version: [20.x]
include:
- os: ubuntu-22.04
arch: x86_64
python-version: 3.9
container: pagmo2/manylinux228_x86_64_with_deps
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
exclude:
- os: windows-2022
arch: aarch64
- os: ubuntu-22.04
arch: aarch64
- os: macos-13
is-release: false
- os: windows-2022
is-release: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- uses: actions/download-artifact@v4
with:
name: perspective-metadata
path: rust/
- name: Initialize Build
id: init-step
uses: ./.github/actions/install-deps
with:
javascript: "false"
arch: ${{ matrix.arch }}
manylinux: ${{ matrix.container && 'true' || 'false' }}
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: Python Build
run: pnpm run build
if: ${{ !contains(matrix.os, 'windows') }}
env:
PACKAGE: "perspective-python"
PSP_ARCH: ${{ matrix.arch }}
PSP_ROOT_DIR: ${{ github.workspace }}
PSP_BUILD_WHEEL: 1
- name: Python Build (Windows)
run: |
New-Item -ItemType Directory -Path $env:CARGO_TARGET_DIR -Force
pnpm run build
if: ${{ contains(matrix.os, 'windows') }}
env:
CARGO_TARGET_DIR: D:\psp-rust
PSP_CPP_BUILD_DIR: D:\psp-build
PSP_ROOT_DIR: ${{ github.workspace }}
PACKAGE: "perspective-python"
PSP_ARCH: ${{ matrix.arch }}
PSP_BUILD_WHEEL: 1
# Windows sucks lol
- uses: actions/upload-artifact@v4
if: ${{ runner.os == 'Windows' }}
with:
name: perspective-python-dist-${{ matrix.arch}}-${{ matrix.os }}-${{ matrix.python-version }}
path: D:\psp-rust\wheels\*.whl
- uses: actions/upload-artifact@v4
# if: ${{ runner.os != 'Windows' }}
with:
name: perspective-python-dist-${{ matrix.arch}}-${{ matrix.os }}-${{ matrix.python-version }}
path: rust/target/wheels/*.whl
# ,-,---. . . . ,--,--' .
# '|___/ . . . | ,-| ,-. ,-. ,-| `- | ,-. ,-. |-
# ,| \ | | | | | | ,-| | | | | , | |-' `-. |
# `-^---' `-^ ' `' `-^ `-^ ' ' `-^ `-' `-' `-' `'
#
# .-,--. .
# `|__/ . . ,-. |-
# )| \ | | `-. |
# `' ` `-^ `-' `'
#
build_and_test_rust:
runs-on: ${{ matrix.os }}
needs: [lint_and_docs]
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- windows-2022
arch:
- x86_64
node-version: [20.x]
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
exclude:
- os: windows-2022
is-release: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- uses: actions/download-artifact@v4
with:
name: perspective-metadata
path: rust/
- name: Initialize Build
id: init-step
uses: ./.github/actions/install-deps
with:
javascript: "false"
arch: ${{ matrix.arch }}
manylinux: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: Rust Build
run: pnpm run build
if: ${{ !contains(matrix.os, 'windows') }}
env:
PACKAGE: "perspective-rs"
PSP_ROOT_DIR: ${{ github.workspace }}
- name: Rust Build (Windows)
run: |
New-Item -ItemType Directory -Path $env:CARGO_TARGET_DIR -Force
pnpm run build
if: ${{ contains(matrix.os, 'windows') }}
env:
CARGO_TARGET_DIR: D:\psp-rust
PSP_ROOT_DIR: ${{ github.workspace }}
PACKAGE: "perspective-rs"
- name: Rust Test
if: ${{ !contains(matrix.os, 'windows') }}
run: pnpm run test
env:
PACKAGE: "perspective-rs"
PSP_ROOT_DIR: ${{ github.workspace }}
- name: Rust Test (Windows)
run: |
New-Item -ItemType Directory -Path $env:CARGO_TARGET_DIR -Force
pnpm run test
if: ${{ contains(matrix.os, 'windows') }}
env:
CARGO_TARGET_DIR: D:\psp-rust
PSP_ROOT_DIR: ${{ github.workspace }}
PACKAGE: "perspective-rs"
- name: Package
if: ${{ startsWith(github.ref, 'refs/tags/v') && !contains(matrix.os, 'windows') }}
run: cargo package --allow-dirty -p perspective -p perspective-viewer -p perspective-js -p perspective-client -p perspective-server -p perspective-python
- uses: actions/upload-artifact@v4
if: ${{ startsWith(github.ref, 'refs/tags/v') && !contains(matrix.os, 'windows') }}
with:
name: perspective-rust
path: rust/target/package/*.crate
# ,-,---. . . .-,--. . .
# '|___/ . . . | ,-| '|__/ . . ,-. ,-| . ,-| ,-.
# ,| \ | | | | | | .| | | | | | | | | | |-'
# `-^---' `-' ' `' `-' `' `-| `-' `-' ' `-' `-'
# /|
# `-'
build_emscripten_wheel:
runs-on: ${{ matrix.os }}
needs: [lint_and_docs]
# if: ${{ startsWith(github.ref, 'refs/tags/v') }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
arch:
- x86_64
python-version:
- 3.9
node-version: [20.x]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- uses: actions/download-artifact@v4
with:
name: perspective-metadata
path: rust/
- name: Initialize Build
id: init-step
uses: ./.github/actions/install-deps
with:
pyodide: "true"
javascript: "false"
arch: ${{ matrix.arch }}
manylinux: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: Python Build Pyodide
run: pnpm install && pnpm run build
env:
PSP_PYODIDE: 1
PACKAGE: "perspective-python"
CI: 1
- name: "Test Pyodide"
run: pnpm run test
env:
PSP_PYODIDE: 1
PACKAGE: "perspective-python"
CI: 1
- uses: actions/upload-artifact@v4
with:
name: perspective-python-dist-wasm32-emscripten-${{ matrix.python-version }}
path: rust/target/wheels/*.whl
# ,-,---. . . . ,--,--' .
# '|___/ . . . | ,-| ,-. ,-. ,-| `- | ,-. ,-. |-
# ,| \ | | | | | | ,-| | | | | , | |-' `-. |
# `-^---' `-^ ' `' `-^ `-^ ' ' `-^ `-' `-' `-' `'
#
# ,-_/ . . .
# ' | . . ,-. . . |- ,-. ,-. | ,-. |-.
# | | | | | | | | |-' | | ,-| | |
# | `-^ |-' `-| `' `-' ' `' `-^ ^-'
# /` | | /|
# `--' ' `-'
#
build_and_test_jupyterlab:
needs: [build_js, build_python]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-13
- windows-2022
arch:
- aarch64
- x86_64
python-version:
- 3.9
node-version: [20.x]
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
exclude:
- os: windows-2022
arch: aarch64
- os: ubuntu-22.04
arch: aarch64
- os: macos-13
is-release: false
- os: windows-2022
is-release: false
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
id: init-step
uses: ./.github/actions/install-deps
with:
rust: "false"
cpp: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
name: perspective-js-dist
path: .
- uses: actions/download-artifact@v4
with:
name: perspective-metadata
path: rust/
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-${{ matrix.arch }}-${{ matrix.os }}-${{ matrix.python-version }}
path: .
- name: Build extension
run: pnpm run build
env:
PACKAGE: "perspective-jupyterlab"
- run: node tools/perspective-scripts/repack_wheel.mjs
- name: Python Build sdist
run: pnpm run build
env:
PACKAGE: "perspective-python"
if: ${{ runner.os == 'Linux' }}
# PSP_USE_CCACHE: 1
# PSP_ARCH: ${{ matrix.arch }}
PSP_BUILD_SDIST: 1
- uses: actions/upload-artifact@v4
with:
name: perspective-python-dist-${{ matrix.arch}}-${{ matrix.os }}-${{ matrix.python-version }}
path: "*.whl"
overwrite: true
- uses: actions/upload-artifact@v4
if: ${{ runner.os == 'Linux' }}
with:
name: perspective-python-sdist
path: rust/target/wheels/*.tar.gz
- uses: ./.github/actions/install-wheel
if: ${{ runner.os == 'Linux' }}
- name: Run Jupyter Tests
if: ${{ false }}
# if: ${{ runner.os == 'Linux' }}
run: |
jupyter lab --generate-config
pnpm run test --jupyter
env:
PACKAGE: "perspective-jupyterlab"
# PSP_USE_CCACHE: 1
# ,--,--' . ,-_/ .---. .
# `- | ,-. ,-. |- ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# , | |-' `-. | | ,-| | / ,-| \ | | | | | |
# `-' `-' `-' `' | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
test_js:
needs: [build_js]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
python-version:
- 3.9
node-version: [20.x]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
uses: ./.github/actions/install-deps
with:
python: "false"
rust: "false"
cpp: "false"
playwright: "true"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
name: perspective-js-dist
path: .
- name: Run Tests
run: pnpm run test
env:
PACKAGE: "perspective-cpp,perspective,perspective-viewer,perspective-viewer-datagrid,perspective-viewer-d3fc,perspective-viewer-openlayers,perspective-workspace,perspective-cli"
# PSP_USE_CCACHE: 1
# ,--,--' . .-,--. . .
# `- | ,-. ,-. |- '|__/ . . |- |-. ,-. ,-.
# , | |-' `-. | ,| | | | | | | | | |
# `-' `-' `-' `' `' `-| `' ' ' `-' ' '
# /|
# `-'
test_python:
needs: [build_python]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-13
- macos-14
- windows-2022
arch:
- x86_64
- aarch64
python-version:
- 3.9
# - 3.12
node-version: [20.x]
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
exclude:
- os: macos-13
is-release: false
- os: macos-14
is-release: false
- os: windows-2022
is-release: false
- os: macos-13
arch: aarch64
- os: macos-14
arch: x86_64
- os: windows-2022
arch: aarch64
- os: ubuntu-22.04
arch: aarch64
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
uses: ./.github/actions/install-deps
with:
rust: "false"
cpp: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
# the macos-14 runner tests artifacts built on macos-13
name: perspective-python-dist-${{ matrix.arch }}-${{ matrix.os == 'macos-14' && 'macos-13' || matrix.os }}-${{ matrix.python-version }}
- uses: ./.github/actions/install-wheel
- name: Run Tests
run: pnpm run test
env:
PACKAGE: "perspective-python"
# PSP_USE_CCACHE: 1
test_python_sdist:
needs: [build_and_test_jupyterlab]
runs-on: ${{ matrix.os }}
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
arch:
- x86_64
python-version:
- 3.9
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
uses: ./.github/actions/install-deps
with:
rust: "true"
cpp: "true"
python: "true"
javascript: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
name: perspective-rust
path: crates/
- uses: actions/download-artifact@v4
with:
name: perspective-python-sdist
# The sdist depends on perspective-{client,server} crates published to
# crates.io. Patch the build to instead use .crate artifacts built
# previously in the workflow
- name: Set up path overrides for perspective .crate contents
shell: bash
run: |
(cd crates && tar xvf perspective-client-*.crate && tar xvf perspective-server-*.crate)
CLIENT_CRATE_ROOT=$(ls -d "$PWD"/crates/perspective-client-*/ | head -n 1)
SERVER_CRATE_ROOT=$(ls -d "$PWD"/crates/perspective-server-*/ | head -n 1)
mkdir -p $HOME/.cargo
cat > $HOME/.cargo/config.toml <<EOF
[patch.crates-io]
perspective-client = { path = "$CLIENT_CRATE_ROOT" }
perspective-server = { path = "$SERVER_CRATE_ROOT" }
EOF
- name: Install perspective-python sdist
shell: bash
run: python -m pip install -vv ./perspective*.tar.gz
- name: Verify licenses are installed
shell: bash
run: |
pip show -f perspective-python | tee wheel_installed_files.txt
# Maturin got this wrong: the packages should be in .dist-info/licenses/
# Newer versions of Maturin will fix it, so search for either location.
# https://github.com/PyO3/maturin/pull/862 https://github.com/PyO3/maturin/pull/2181
grep -E '.dist-info/(license|license_files)/LICENSE.md' wheel_installed_files.txt
grep -E '.dist-info/(license|license_files)/LICENSE_THIRDPARTY_cargo.yml' wheel_installed_files.txt
- name: Verify labextension
shell: bash
run: |
jupyter labextension list --debug
jupyter labextension list 2>&1 | grep '@finos/perspective-jupyterlab'
- name: Run import test
run: python -c 'import perspective'
- name: Run pytests
run: pytest -v --pyargs 'perspective.tests'
# ,-,---. . .
# '|___/ ,-. ,-. ,-. |-. ,-,-. ,-. ,-. | ,
# ,| \ |-' | | | | | | | | ,-| | |<
# `-^---' `-' ' ' `-' ' ' ' ' ' `-^ ' ' `
#
# .-,--. . .
# '|__/ . . |- |-. ,-. ,-.
# ,| | | | | | | | | |
# `' `-| `' ' ' `-' ' '
# /|
# `-'
benchmark_python:
needs: [build_python, build_js]
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04]
python-version: [3.9]
node-version: [20.x]
arch: [x86_64]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
uses: ./.github/actions/install-deps
with:
rust: "false"
cpp: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
name: perspective-js-dist
path: .
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-${{ matrix.arch }}-${{ matrix.os }}-${{ matrix.python-version }}
- uses: ./.github/actions/install-wheel
with:
inplace: "false"
- name: Benchmarks
run: pnpm run bench
env:
PACKAGE: "perspective-python"
- uses: actions/upload-artifact@v4
with:
name: perspective-python-benchmarks
path: tools/perspective-bench/dist/benchmark-python.arrow
# ,-,---. . .
# '|___/ ,-. ,-. ,-. |-. ,-,-. ,-. ,-. | ,
# ,| \ |-' | | | | | | | | ,-| | |<
# `-^---' `-' ' ' `-' ' ' ' ' ' `-^ ' ' `
#
# ,-_/ .---. .
# ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# | ,-| | / ,-| \ | | | | | |
# | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
benchmark_js:
needs: [build_js]
if: startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
os: [ubuntu-22.04]
node-version: [20.x]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
uses: ./.github/actions/install-deps
with:
rust: "false"
cpp: "false"
python: "false"
javascript: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
name: perspective-js-dist
path: .
- name: Benchmarks
run: pnpm run bench
env:
PACKAGE: "perspective"
- uses: actions/upload-artifact@v4
with:
name: perspective-js-benchmarks
path: tools/perspective-bench/dist/benchmark-js.arrow
# .-,--. . . .
# '|__/ . . |-. | . ,-. |-.
# ,| | | | | | | `-. | |
# `' `-^ ^-' `' ' `-' ' '
#
publish:
needs:
[
build_and_test_jupyterlab,
test_python,
test_python_sdist,
test_js,
benchmark_js,
benchmark_python,
build_emscripten_wheel,
build_and_test_rust,
lint_and_docs,
]
if: startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
os: [ubuntu-22.04]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Config
id: config-step
uses: ./.github/actions/config
- name: Initialize Build
uses: ./.github/actions/install-deps
with:
rust: "false"
cpp: "false"
python: "false"
javascript: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- uses: actions/download-artifact@v4
with:
name: perspective-js-dist
path: .
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-aarch64-macos-13-3.9
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-x86_64-macos-13-3.9
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-x86_64-windows-2022-3.9
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-x86_64-ubuntu-22.04-3.9
- uses: actions/download-artifact@v4
with:
name: perspective-python-dist-wasm32-emscripten-3.9
- uses: actions/download-artifact@v4
with:
name: perspective-python-sdist
- uses: actions/download-artifact@v4
with:
name: perspective-js-benchmarks
- uses: actions/download-artifact@v4
with:
name: perspective-python-benchmarks
- uses: actions/download-artifact@v4
with:
name: perspective-rust
- run: pnpm pack --pack-destination=../..
working-directory: ./rust/perspective-js
- run: pnpm pack --pack-destination=../..
working-directory: ./rust/perspective-viewer
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-viewer-datagrid
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-viewer-d3fc
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-viewer-openlayers
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-workspace
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-cli
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-webpack-plugin
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-esbuild-plugin
- run: pnpm pack --pack-destination=../..
working-directory: ./packages/perspective-jupyterlab
- name: Publish assets
uses: softprops/action-gh-release@v2
with:
draft: true
generate_release_notes: true
files: |
*.whl
*.tar.gz
*.tgz
*.arrow
*.crate
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}