mirror of
https://github.com/pyscript/pyscript.git
synced 2026-02-13 07:01:00 -05:00
* Add cache, fetch, retry logic to tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * run in parallel * add pytest-xdist * undo parallelism. Need to remove http server to enable. * woops a extra space * Pass flake8 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * spell fulfill * use decorator for fetch if not in cache * Fix --headed and limit to PlaywrightRequestError * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * docs on cache * CICD caching of conda on unstable builds * fix config issues * empty commit to trigger gh-actions * restore build-unstable * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove http server, add parallel * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * temp: Bypass zip runtime test and point to v0.21.3 on CDN * suport for files in zip under /pyodide * remove test-one * self.http_server and remove content_type * domcontentloaded w no timeout on base url + longer timeout on wait_for_pyscript * Fixed #678 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * set default timeout to 60000 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * seamless --headed support * add test-integration-parallel and default for GHActions * simplify the code. Use http://fakeserver instead of localhost:8080 so that it's clearer that the browser is NOT hitting a real server, and use urllib to parse the url. Moreover, the special case for pyodide is no longer needed, it's automatically handled by the normal 'fakeserver' logic * The page-routing logic is becoming too much complicated to stay as an inner function. Move it to its own class, and add some logic to workaround a limitation of playwright which just hangs if a Python exception is raised inside it * no need to use a hash, we can use the url as the key * re-implement the retry logic. The old @retry decorator was nice but a bit too over-engineered and most importantly failed silently in case of exceptions. This new approach is less powerful but since we want to retry only two times, simple is better than complex -- and in case of exception, the exception is actually raised * improve logging Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Madhur Tandon <madhurtandon23@gmail.com> Co-authored-by: Antonio Cuni <anto.cuni@gmail.com>
100 lines
2.8 KiB
YAML
100 lines
2.8 KiB
YAML
name: '[CI] Build Unstable'
|
|
|
|
on:
|
|
push: # Only run on merges into main that modify files under pyscriptjs/
|
|
branches:
|
|
- main
|
|
paths:
|
|
- pyscriptjs/**
|
|
- .github/workflows/build-latest.yml # Test that workflow works when changed
|
|
|
|
pull_request: # Run on any PR that modifies files under pyscriptjs/
|
|
branches:
|
|
- main
|
|
paths:
|
|
- pyscriptjs/**
|
|
- .github/workflows/build-unstable.yml # Test that workflow works when changed
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
BuildAndTest:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: pyscriptjs
|
|
env:
|
|
MINICONDA_PYTHON_VERSION: py38
|
|
MINICONDA_VERSION: 4.11.0
|
|
steps:
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install node
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18.x
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
# npm cache files are stored in `~/.npm` on Linux/macOS
|
|
path: ~/.npm
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: setup Miniconda
|
|
uses: conda-incubator/setup-miniconda@v2
|
|
|
|
- name: Setup Environment
|
|
run: make setup
|
|
|
|
- name: Build
|
|
run: make build
|
|
|
|
- name: TypeScript Tests
|
|
run: make test-ts
|
|
|
|
- name: Python Tests
|
|
run: make test-py
|
|
|
|
- name: Integration Tests
|
|
run: make test-integration-parallel
|
|
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: pyscript
|
|
path: |
|
|
pyscriptjs/build/
|
|
if-no-files-found: error
|
|
retention-days: 7
|
|
|
|
Deploy:
|
|
runs-on: ubuntu-latest
|
|
needs: BuildAndTest
|
|
if: github.ref == 'refs/heads/main' # Only deploy on merge into main
|
|
permissions:
|
|
contents: read
|
|
id-token: write
|
|
|
|
steps:
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: pyscript
|
|
path: ./build/
|
|
|
|
# Deploy to S3
|
|
- name: Configure AWS credentials
|
|
uses: aws-actions/configure-aws-credentials@v1.6.1
|
|
with:
|
|
aws-region: ${{ secrets.AWS_REGION }}
|
|
role-to-assume: ${{ secrets.AWS_OIDC_RUNNER_ROLE }}
|
|
|
|
- name: Sync to S3
|
|
run: aws s3 sync --quiet ./build/ s3://pyscript.net/unstable/
|