Skip to content

Merge pull request #2713 from sinistersnare/feature/better-timestamp-… #11

Merge pull request #2713 from sinistersnare/feature/better-timestamp-…

Merge pull request #2713 from sinistersnare/feature/better-timestamp-… #11

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:
# ,-,---. . . ,-_/ .---. .
# '|___/ . . . | ,-| ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# ,| \ | | | | | | | ,-| | / ,-| \ | | | | | |
# `-^---' `-^ ' `' `-^ | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
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
id: init-step
uses: ./.github/actions/install-deps
with:
clean: "true"
python: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: WebAssembly Build
run: pnpm run build --ci
env:
PACKAGE: "!perspective-python,!perspective-jupyterlab"
# PSP_USE_CCACHE: 1
- name: Lint
run: pnpm run lint
# - name: Docs Build
# run: pnpm run docs
# env:
# PACKAGE: "!perspective-python,!perspective-jupyterlab"
- 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 }}
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
- 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 }}
- run: echo "/opt/python/cp39-cp39/bin" >> $GITHUB_PATH
if: ${{ runner.os == 'Linux' }}
# https://github.com/apache/arrow/issues/38391
- if: ${{ runner.os == 'macOS' }}
run: echo "MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)" >> $GITHUB_ENV
- run: echo "${{ steps.init-step.outputs.VCPKG_INSTALLATION_ROOT }}" >> $env:GITHUB_PATH
if: ${{ runner.os == 'Windows' }}
- 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_ROOT_DIR: ${{ github.workspace }}
VCPKG_ROOT: ${{ steps.init-step.outputs.VCPKG_INSTALLATION_ROOT }}
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_emscripten_wheel:
runs-on: ${{ matrix.os }}
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
- 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: Python Build Pyodide
run: pnpm install && pnpm run build
if: ${{ runner.os == 'Linux' && matrix.arch == 'x86_64' }}
env:
PSP_PYODIDE: 1
PACKAGE: "perspective-python"
CI: 1
- uses: actions/upload-artifact@v4
# if: ${{ runner.os != 'Windows' }}
with:
name: perspective-python-dist-wasm32-emscripten-${{ matrix.python-version }}
path: rust/target/wheels/*.whl
# ,-,---. . . . ,--,--' .
# '|___/ . . . | ,-| ,-. ,-. ,-| `- | ,-. ,-. |-
# ,| \ | | | | | | ,-| | | | | , | |-' `-. |
# `-^---' `-^ ' `' `-^ `-^ ' ' `-^ `-' `-' `-' `'
#
# ,-_/ . . .
# ' | . . ,-. . . |- ,-. ,-. | ,-. |-.
# | | | | | | | | |-' | | ,-| | |
# | `-^ |-' `-| `' `-' ' `' `-^ ^-'
# /` | | /|
# `--' ' `-'
#
build_and_test_juptyerlab:
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-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 }}
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"
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-python,!perspective-jupyterlab"
# PSP_USE_CCACHE: 1
# ,--,--' . .-,--. . .
# `- | ,-. ,-. |- '|__/ . . |- |-. ,-. ,-.
# , | |-' `-. | ,| | | | | | | | | |
# `-' `-' `-' `' `' `-| `' ' ' `-' ' '
# /|
# `-'
test_python:
needs: [build_python]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-13
- windows-2022
python-version:
- 3.9
# - 3.12
node-version: [20.x]
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
arch:
- x86_64
exclude:
- 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
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-python-dist-${{ matrix.arch }}-${{ 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
# ,-,---. . .
# '|___/ ,-. ,-. ,-. |-. ,-,-. ,-. ,-. | ,
# ,| \ |-' | | | | | | | | ,-| | |<
# `-^---' `-' ' ' `-' ' ' ' ' ' `-^ ' ' `
#
# ,-_/ .---. .
# ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# | ,-| | / ,-| \ | | | | | |
# | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
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
- uses: actions/upload-artifact@v4
with:
name: perspective-js-benchmarks
path: tools/perspective-bench/dist/benchmark-js.arrow
# .-,--. . . .
# '|__/ . . |-. | . ,-. |-.
# ,| | | | | | | `-. | |
# `' `-^ ^-' `' ' `-' ' '
#
publish:
needs: [build_and_test_juptyerlab, test_python, test_js, benchmark_js]
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
- 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
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}