Skip to content

Auto CI

Auto CI #958

Workflow file for this run

# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs
name: Auto CI
on:
push:
branches: [ "main", "dev" ]
pull_request:
branches: [ "main" ]
workflow_dispatch:
jobs:
build-js:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [22.x]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: ./app/yarn.lock
- name: Try Compiling
working-directory: ./
run: |
chmod u+x ./scripts/compile.sh
./scripts/compile.sh
- name: Try Frontend Smoke Test
working-directory: ./app
run: |
yarn playwright install --with-deps chromium
yarn test:front_end
- name: Uploading dist
uses: actions/upload-artifact@v4
with:
name: pygwalker-app
path: ./pygwalker/templates/dist/*
build-py:
needs: build-js
timeout-minutes: 90
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
os-version: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v4
- name: Download PyGWalkerApp
uses: actions/download-artifact@v4
id: build-py
with:
name: pygwalker-app
path: ./pygwalker/templates/dist
- name: Use Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Use Node.js 22.x
uses: actions/setup-node@v4
with:
node-version: 22.x
cache: 'yarn'
cache-dependency-path: ./app/yarn.lock
- name: Ensure Yarn
run: |
npm install -g yarn
- name: Download test data
working-directory: ./
run: |
chmod u+x ./scripts/test-init.py
python ./scripts/test-init.py
- name: Try Installing
working-directory: ./
env:
PIP_ONLY_BINARY: "duckdb"
run: |
pip install ".[export]"
- name: Pin Pydantic v1 compatibility leg
if: ${{ matrix.os-version == 'ubuntu-latest' && matrix.python-version == '3.10' }}
run: |
pip install "pydantic==1.10.15"
- name: Try Install Modin In Linux Os
if: ${{ matrix.os-version == 'ubuntu-latest' && matrix.python-version == '3.11' }}
run: |
pip install "numpy<2" "pandas<2.1"
pip install aiohttp==3.8.6
pip install "modin==0.23.1" "modin[ray]==0.23.1"
pip install pydantic==1.10.9
- name: Try Running
working-directory: ./tests/
run: |
pip install ipykernel nbmake pandas polars pytest
python -m ipykernel install --name python --user
jupyter kernelspec list
python -c "from pathlib import Path; import subprocess, sys; notebooks = sorted(str(path) for path in Path('.').glob('*.ipynb')); subprocess.run([sys.executable, '-m', 'pytest', '--nbmake', '--nbmake-kernel=python', *notebooks], check=True)"
- name: Try Pytest
timeout-minutes: 20
working-directory: ./
run: |
pip install duckdb_engine
pip install pytest ruff starlette polars tornado
ruff check pygwalker tests scripts bin pygwalker_tools
ruff format --check pygwalker tests scripts bin pygwalker_tools
python -X faulthandler -W error::DeprecationWarning:pygwalker -m pytest -o faulthandler_timeout=300 tests