Deprecate kaleido #613
Workflow file for this run
This file contains hidden or 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
| name: CI | |
| 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 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: | |
| # os: [ubuntu-latest, windows-latest, macos-latest] | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Setup Chrome | |
| uses: browser-actions/setup-chrome@v1 | |
| with: | |
| chrome-version: 'latest' | |
| install-chromedriver: true | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - run: cargo test --workspace --features plotly_ndarray,plotly_image,static_export_default --exclude plotly_kaleido | |
| - if: ${{ matrix.os == 'windows-latest' }} | |
| run: gci -recurse -filter "*example*" | |
| 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, | |
| financial_charts, | |
| images, | |
| kaleido, | |
| maps, | |
| ndarray, | |
| scientific_charts, | |
| shapes, | |
| static_export, | |
| 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 | |
| test_static_export_chrome: | |
| name: Test Static Export with Chrome (Windows) | |
| runs-on: windows-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Chrome and chromedriver | |
| id: setup-chrome | |
| uses: browser-actions/setup-chrome@v1 | |
| with: | |
| chrome-version: 'latest' | |
| install-chromedriver: true | |
| - uses: dtolnay/rust-toolchain@stable | |
| - 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- | |
| - name: Debug - Show setup-chrome outputs | |
| run: | | |
| Write-Host "=== Setup Chrome Action Outputs ===" | |
| Write-Host "chrome-version: ${{ steps.setup-chrome.outputs.chrome-version }}" | |
| Write-Host "chrome-path: ${{ steps.setup-chrome.outputs.chrome-path }}" | |
| Write-Host "chromedriver-version: ${{ steps.setup-chrome.outputs.chromedriver-version }}" | |
| Write-Host "chromedriver-path: ${{ steps.setup-chrome.outputs.chromedriver-path }}" | |
| Write-Host "================================" | |
| - name: Debug - System information | |
| run: | | |
| Write-Host "=== System Information ===" | |
| Write-Host "OS Version: $(Get-ComputerInfo | Select-Object -ExpandProperty WindowsProductName)" | |
| Write-Host "Architecture: $(Get-ComputerInfo | Select-Object -ExpandProperty OsArchitecture)" | |
| Write-Host "Available memory: $((Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / 1MB) MB" | |
| Write-Host "==========================" | |
| - name: Debug - Check Chrome and chromedriver installation | |
| run: | | |
| Write-Host "=== Chrome and Chromedriver Check ===" | |
| # Check if Chrome is in PATH | |
| try { | |
| $chromeVersion = & chrome.exe --version 2>$null | |
| Write-Host "Chrome in PATH: $chromeVersion" | |
| } catch { | |
| Write-Host "Chrome not found in PATH" | |
| } | |
| # Check if chromedriver is in PATH | |
| try { | |
| $chromedriverVersion = & chromedriver.exe --version 2>$null | |
| Write-Host "Chromedriver in PATH: $chromedriverVersion" | |
| } catch { | |
| Write-Host "Chromedriver not found in PATH" | |
| } | |
| # Check specific paths from action outputs | |
| $chromePath = "${{ steps.setup-chrome.outputs.chrome-path }}" | |
| $chromedriverPath = "${{ steps.setup-chrome.outputs.chromedriver-path }}" | |
| Write-Host "Chrome path from action: $chromePath" | |
| Write-Host "Chromedriver path from action: $chromedriverPath" | |
| if (Test-Path $chromePath) { | |
| Write-Host "Chrome file exists: $(Get-Item $chromePath | Select-Object -ExpandProperty FullName)" | |
| Write-Host "Chrome file size: $((Get-Item $chromePath).Length) bytes" | |
| } else { | |
| Write-Host "Chrome file does not exist at specified path" | |
| } | |
| if (Test-Path $chromedriverPath) { | |
| Write-Host "Chromedriver file exists: $(Get-Item $chromedriverPath | Select-Object -ExpandProperty FullName)" | |
| Write-Host "Chromedriver file size: $((Get-Item $chromedriverPath).Length) bytes" | |
| } else { | |
| Write-Host "Chromedriver file does not exist at specified path" | |
| } | |
| Write-Host "================================" | |
| - name: Debug - Check Rust toolchain and dependencies | |
| run: | | |
| Write-Host "=== Rust Toolchain Check ===" | |
| rustc --version | |
| cargo --version | |
| Write-Host "Current directory: $(Get-Location)" | |
| Write-Host "Workspace contents:" | |
| Get-ChildItem -Name | Sort-Object | |
| Write-Host "==========================" | |
| - name: Debug - Check plotly_static package | |
| run: | | |
| Write-Host "=== Plotly Static Package Check ===" | |
| cd plotly_static | |
| Write-Host "Package contents:" | |
| Get-ChildItem -Name | Sort-Object | |
| Write-Host "Cargo.toml contents:" | |
| Get-Content Cargo.toml | |
| Write-Host "================================" | |
| - name: Debug - Pre-update cargo index | |
| run: | | |
| Write-Host "=== Pre-update Cargo Index Check ===" | |
| Write-Host "Current cargo index status:" | |
| cargo search --limit 1 plotly 2>&1 | Select-String -Pattern "Updating|Downloading|error" || Write-Host "Index seems up to date" | |
| Write-Host "================================" | |
| - name: Update cargo index (if needed) | |
| run: | | |
| Write-Host "=== Updating Cargo Index ===" | |
| # Force update the index with a timeout | |
| $timeout = 300 # 5 minutes | |
| $job = Start-Job -ScriptBlock { | |
| cargo update --dry-run | |
| } | |
| try { | |
| Wait-Job $job -Timeout $timeout | |
| $result = Receive-Job $job | |
| Write-Host "Cargo update result: $result" | |
| if ($job.State -eq "Completed") { | |
| Write-Host "Cargo index updated successfully" | |
| } else { | |
| Write-Host "Cargo index update timed out, continuing anyway" | |
| Stop-Job $job | |
| } | |
| } catch { | |
| Write-Host "Cargo index update failed: $_" | |
| Write-Host "Continuing with test anyway..." | |
| } finally { | |
| if ($job) { | |
| Remove-Job $job -Force -ErrorAction SilentlyContinue | |
| } | |
| } | |
| Write-Host "================================" | |
| - name: Pre-compile dependencies | |
| run: | | |
| Write-Host "=== Pre-compiling Dependencies ===" | |
| # Set environment variables | |
| $env:WEBDRIVER_PATH = "${{ steps.setup-chrome.outputs.chromedriver-path }}" | |
| $env:CHROME_PATH = "${{ steps.setup-chrome.outputs.chrome-path }}" | |
| $env:RUST_LOG = "debug" | |
| $env:RUST_BACKTRACE = "1" | |
| Write-Host "Pre-compiling plotly_static with features..." | |
| cargo check --verbose --package plotly_static --features chromedriver,webdriver_download | |
| Write-Host "Dependencies pre-compiled successfully" | |
| - name: Run PNG export test with Chrome | |
| run: | | |
| Write-Host "=== Starting PNG Export Test ===" | |
| # Set environment variables | |
| $env:WEBDRIVER_PATH = "${{ steps.setup-chrome.outputs.chromedriver-path }}" | |
| $env:CHROME_PATH = "${{ steps.setup-chrome.outputs.chrome-path }}" | |
| $env:RUST_LOG = "debug" | |
| $env:RUST_BACKTRACE = "1" | |
| Write-Host "Environment variables set:" | |
| Write-Host "WEBDRIVER_PATH: $env:WEBDRIVER_PATH" | |
| Write-Host "CHROME_PATH: $env:CHROME_PATH" | |
| Write-Host "RUST_LOG: $env:RUST_LOG" | |
| Write-Host "RUST_BACKTRACE: $env:RUST_BACKTRACE" | |
| # Verify the paths exist | |
| if (-not (Test-Path $env:WEBDRIVER_PATH)) { | |
| Write-Error "Chromedriver not found at: $env:WEBDRIVER_PATH" | |
| exit 1 | |
| } | |
| if (-not (Test-Path $env:CHROME_PATH)) { | |
| Write-Error "Chrome not found at: $env:CHROME_PATH" | |
| exit 1 | |
| } | |
| Write-Host "All paths verified, starting cargo test..." | |
| # Run the test directly without PowerShell job complexity | |
| cargo test --verbose --package plotly_static --features chromedriver,webdriver_download tests::save_png -- --nocapture | |
| Write-Host "=== PNG Export Test Completed ===" | |
| 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 | |
| - 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: | | |
| cd ${{ github.workspace }}/examples/basic_charts && cargo run | |
| cd ${{ github.workspace }}/examples/statistical_charts && cargo run | |
| cd ${{ github.workspace }}/examples/scientific_charts && cargo run | |
| cd ${{ github.workspace }}/examples/financial_charts && cargo run | |
| cd ${{ github.workspace }}/examples/3d_charts && cargo run | |
| cd ${{ github.workspace }}/examples/subplots && cargo run | |
| cd ${{ github.workspace }}/examples/shapes && cargo run | |
| cd ${{ github.workspace }}/examples/themes && cargo run | |
| cd ${{ github.workspace }}/examples/static_export && cargo run | |
| - name: Build book | |
| run: mdbook build docs/book |