Skip to content

Build Status

Build Status #1640

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.11
node-version: [22.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: "metadata"
- name: Lint
run: pnpm run lint --nightly
- 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_and_test_rust:
runs-on: ${{ matrix.os }}
needs: [lint_and_docs]
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- windows-2025
arch:
- x86_64
node-version: [22.x]
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') || github.ref_name == 'master' || github.event.inputs.ci-full }}
# exclude:
# - os: windows-2025
# 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: "rust"
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: "rust"
- name: Rust Test
if: ${{ !contains(matrix.os, 'windows') }}
run: pnpm run test
env:
PACKAGE: "rust"
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: "rust"
- name: Package
if: ${{ !contains(matrix.os, 'windows') && steps.config-step.outputs.FULL_RUN }}
run: cargo package --no-verify --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: ${{ !contains(matrix.os, 'windows') && steps.config-step.outputs.FULL_RUN }}
with:
name: perspective-rust
path: rust/target/package/*.crate