Merge pull request #2713 from sinistersnare/feature/better-timestamp-… #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ | |
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃ | |
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃ | |
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃ | |
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃ | |
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ | |
# ┃ 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 }} |