Skip to content

bump versions

bump versions #34

Workflow file for this run

name: Build&Test
on:
workflow_dispatch:
pull_request:
branches: [ main ]
push:
branches: [ main ]
# Cancel any in-flight jobs for the same PR/branch so there's only one active
# at a time
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_BACKTRACE: full
jobs:
rustfmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- run: cargo fmt --all -- --check
- run: cd ${{ github.workspace }}/examples && cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Chrome
uses: browser-actions/setup-chrome@v1
with:
chrome-version: 'latest'
install-chromedriver: true
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
targets: wasm32-unknown-unknown
# lint plotly_static for all features
- run: cargo clippy -p plotly_static --features geckodriver,webdriver_download -- -D warnings -A deprecated
- run: cargo clippy -p plotly_static --features chromedriver,webdriver_download -- -D warnings -A deprecated
# lint the main library workspace for non-wasm target
- run: cargo clippy --features all -- -D warnings -A deprecated
# lint the non-wasm examples
- run: cd ${{ github.workspace }}/examples && cargo clippy --workspace --exclude "wasm*" --exclude "kaleido" -- -D warnings
# lint the plotly library for wasm target
- run: cargo clippy --package plotly --target wasm32-unknown-unknown -- -D warnings
# lint the wasm examples
- run: cd ${{ github.workspace }}/examples/wasm-yew && cargo clippy --target wasm32-unknown-unknown --all
semver:
name: semver
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check semver
uses: obi1kenobi/cargo-semver-checks-action@v2
with:
package: plotly
feature-group: only-explicit-features
features: kaleido
rust-toolchain: stable
release-type: minor
test:
name: Tests
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
browser: chrome
features: plotly_ndarray,plotly_image,static_export_default,debug
- os: ubuntu-latest
browser: firefox
features: plotly_ndarray,plotly_image,static_export_geckodriver,static_export_wd_download,debug
- os: windows-latest
browser: chrome
features: plotly_ndarray,plotly_image,static_export_chromedriver,debug
- os: macos-latest
browser: chrome
features: plotly_ndarray,plotly_image,static_export_default,debug
runs-on: ${{ matrix.os }}
timeout-minutes: ${{ matrix.os == 'windows-latest' && 30 || 10 }}
steps:
- name: Setup Chrome
if: matrix.browser == 'chrome'
uses: browser-actions/setup-chrome@v1
with:
chrome-version: 'latest'
install-chromedriver: true
id: setup-chrome
- name: Setup Firefox
if: matrix.browser == 'firefox'
uses: browser-actions/setup-firefox@v1
with:
firefox-version: 'latest'
id: setup-firefox
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
# Cache cargo registry for all platforms
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
# Windows-specific environment setup for static export tests
- name: Setup Windows environment for static export
if: matrix.os == 'windows-latest'
run: |
.\.github\scripts\setup-windows-static-export.ps1 `
-ChromeVersion "${{ steps.setup-chrome.outputs.chrome-version }}" `
-ChromePath "${{ steps.setup-chrome.outputs.chrome-path }}" `
-ChromeDriverPath "${{ steps.setup-chrome.outputs.chromedriver-path }}"
# Run tests on Ubuntu with Chrome
- name: Run tests (${{ matrix.os }} - Chrome)
if: matrix.os == 'ubuntu-latest' && matrix.browser == 'chrome'
run: cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido
# Install xvfb for Firefox WebGL support
- name: Install xvfb
if: matrix.os == 'ubuntu-latest' && matrix.browser == 'firefox'
run: |
sudo apt-get update
sudo apt-get install -y xvfb
# Run tests on Ubuntu with Firefox
- name: Run tests (${{ matrix.os }} - Firefox)
if: matrix.os == 'ubuntu-latest' && matrix.browser == 'firefox'
run: |
# Set environment variables for Firefox WebDriver
export BROWSER_PATH="${{ steps.setup-firefox.outputs.firefox-path }}"
export RUST_LOG="debug"
export RUST_BACKTRACE="1"
echo "Environment variables set:"
echo "BROWSER_PATH: $BROWSER_PATH"
echo "RUST_LOG: $RUST_LOG"
xvfb-run -s "-screen 0 1920x1080x24" cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido
# Run tests on macOS with Chrome
- name: Run tests (${{ matrix.os }} - Chrome)
if: matrix.os == 'macos-latest' && matrix.browser == 'chrome'
run: cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido
# Run tests on Windows with Chrome WebDriver
- name: Run tests (${{ matrix.os }} - Chrome)
if: matrix.os == 'windows-latest' && matrix.browser == 'chrome'
shell: pwsh
run: |
# Set environment variables for WebDriver
$env:WEBDRIVER_PATH = "${{ steps.setup-chrome.outputs.chromedriver-path }}"
$env:BROWSER_PATH = "${{ steps.setup-chrome.outputs.chrome-path }}"
$env:RUST_LOG = "debug"
$env:RUST_BACKTRACE = "1"
$env:ANGLE_DEFAULT_PLATFORM = "swiftshader"
Write-Host "Environment variables set:"
Write-Host "WEBDRIVER_PATH: $env:WEBDRIVER_PATH"
Write-Host "BROWSER_PATH: $env:BROWSER_PATH"
cargo test --workspace --features ${{ matrix.features }} --exclude plotly_kaleido
- name: Upload static image(s) artifact
uses: actions/upload-artifact@v4
with:
name: example-pdf-${{ matrix.os }}-${{ matrix.browser }}
path: |
${{ github.workspace }}/plotly_static/static_example.*
${{ github.workspace }}/plotly/plotly_example.*
${{ github.workspace }}/plotly/plotly_example_surface.*
retention-days: 30
code-coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- uses: taiki-e/install-action@cargo-llvm-cov
- uses: codecov/codecov-action@v3
build_examples:
name: Build Examples
strategy:
fail-fast: false
matrix:
example: # missing jupyter
[
3d_charts,
basic_charts,
custom_controls,
customization/consistent_static_format_export,
customization/density_mapbox_example,
customization/multiple_plots_example,
financial_charts,
images,
kaleido,
maps,
ndarray,
scientific_charts,
shapes,
statistical_charts,
subplots,
themes,
]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Chrome (for static_export)
if: matrix.example == 'static_export'
uses: browser-actions/setup-chrome@v1
with:
chrome-version: 'latest'
install-chromedriver: true
- uses: dtolnay/rust-toolchain@stable
- run: cd ${{ github.workspace }}/examples/${{ matrix.example }} && cargo build
build_wasm_examples:
name: Build Wasm Examples
strategy:
fail-fast: false
matrix:
example: [basic, callback-example]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- run: cd ${{ github.workspace }}/examples/wasm-yew/${{ matrix.example }} && cargo build --target wasm32-unknown-unknown
build_book:
name: Build Book
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Chrome (for static_export)
uses: browser-actions/setup-chrome@v1
with:
chrome-version: 'latest'
install-chromedriver: true
id: setup-chrome
- uses: dtolnay/rust-toolchain@stable
- run: cargo install mdbook --no-default-features --features search --vers "^0.4" --locked --quiet
- name: Build examples to generate needed html files
run: .github/scripts/build-book-examples.sh ${{ github.workspace }}/examples
- name: Build book
run: mdbook build docs/book