pyodide/.github/workflows/main.yml

152 lines
3.6 KiB
YAML

name: main
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: main-${{ github.head_ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v3
with:
python-version: 3.10.2
- uses: pre-commit/action@v2.0.3
build-core:
runs-on: ubuntu-latest
env:
EMSDK_NUM_CORES: 3
EMCC_CORES: 3
PYODIDE_JOBS: 3
CCACHE_DIR: /tmp/ccache
steps:
- uses: actions/checkout@v2
- name: Cache ccache output
uses: actions/cache@v2
with:
path: |
/tmp/ccache
key: ${{ hashFiles('Makefile.envs') }}-v20211025-
- uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: pyodide-env
python-version: 3.10.2
channels: conda-forge
- name: Check Python versions
shell: bash -l {0}
run: |
python --version
which python
- name: Install dependencies
shell: bash -l {0}
run: |
sudo apt install -y build-essential git
conda install -y nodejs ccache f2c pkg-config swig make patch pkg-config texinfo autoconf automake libtool
pip install -r requirements.txt
- name: Build emsdk
shell: bash -l {0}
run: |
which ccache
ccache -z
make -C emsdk
ccache -s
- name: Build Cpython
shell: bash -l {0}
run: |
# This is necessary to use the ccache from emsdk
source pyodide_env.sh
which ccache
ccache -z
make -C cpython
ccache -s
- name: build Pyodide core + numpy
shell: bash -l {0}
run: |
# This is necessary to use the ccache from emsdk
source pyodide_env.sh
ccache -z
PYODIDE_PACKAGES="core,numpy" make
ccache -s
- name: check-size
run: ls -lh dist/
- name: Store artifacts build
uses: actions/upload-artifact@v2
with:
name: core-build
path: ./dist/
retention-days: 60
test-core:
runs-on: ubuntu-latest
env:
DISPLAY: :99
needs: [build-core]
strategy:
fail-fast: false
matrix:
runner: [playwright]
browser: [firefox, chrome]
steps:
- uses: actions/checkout@v2
- name: Download build artifact
uses: actions/download-artifact@v2
with:
name: core-build
path: ./dist/
- uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: pyodide-env
python-version: 3.10.2
channels: conda-forge
- name: install test requirements
shell: bash -l {0}
run: |
pip install -r requirements.txt
pip install playwright && python -m playwright install
- name: run core tests
env:
BROWSER: ${{ matrix.browser }}
RUNNER: ${{ matrix.runner }}
shell: bash -l {0}
run: |
ls -lh
ls -lh dist/
tools/pytest_wrapper.py src packages/micropip/ -v -k "${BROWSER}" --runner "${RUNNER}"
- name: run package tests
env:
BROWSER: ${{ matrix.browser }}
RUNNER: ${{ matrix.runner }}
shell: bash -l {0}
run: |
ls -lh
ls -lh dist/
tools/pytest_wrapper.py packages/test* packages/*/test* -v -k "numpy and not joblib and ${BROWSER}" --runner "${RUNNER}"