Skip to content

Ressurrect our pyodide support #1177

Ressurrect our pyodide support

Ressurrect our pyodide support #1177

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
defaults:
run:
shell: bash
jobs:
pre_job:
runs-on: ubuntu-latest
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@v5
with:
concurrent_skipping: "outdated_runs"
cancel_others: "true"
skip_after_successful_duplicate: "false"
test:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Use Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
id: setup-python
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: "1.8.3"
virtualenvs-in-project: true
- run: |
cat *.log
if: failure()
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --all-extras
- name: Run tests
run: |
source $VENV # Only needed because of Github Action caching
poe test
test-pyodide:
needs: [pre_job, build]
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: 'actions/setup-node@v4'
with:
node-version: 20.x
cache: 'npm'
cache-dependency-path: 'tests/pyodide/package-lock.json'
- id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-in-project: true
- uses: actions/download-artifact@v4
with:
name: build-artifacts
path: 'dist'
- name: Install Dependencies
run: |
poetry install --with test
cd tests/pyodide
npm ci
- name: Run tests
run: |
source $VENV
poe test-pyodide
lint:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Python
id: use-python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-in-project: true
- name: Load cached venv
# I wonder if we can replace this whole step with with the "Use Python" step above's `cache` field?
# See: https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#outputs-and-environment-variables
id: cached-poetry-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ hashFiles('**/poetry.lock') }}-${{ steps.use-python.outputs.python-version }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --all-extras --with dev
- name: Run lints
run: |
source $VENV
poe lint
build:
needs: pre_job
if: needs.pre_job.outputs.should_skip != 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-in-project: true
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --all-extras
- name: Build packages (sdist and wheel)
run: |
git describe --tags --abbrev=0
poetry build
- name: Upload builds
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: "dist/*"