mirror of https://github.com/pyodide/pyodide.git
148 lines
4.3 KiB
YAML
148 lines
4.3 KiB
YAML
version: 2
|
|
|
|
defaults: &defaults
|
|
working_directory: ~/repo
|
|
docker:
|
|
- image: circleci/python:3.7.0-stretch-browsers
|
|
|
|
jobs:
|
|
build:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
|
|
- run:
|
|
name: dependencies
|
|
command: |
|
|
|
|
# We need at least g++-8, but stretch comes with g++-6
|
|
# Set up the Debian testing repo, and then install g++ from there...
|
|
sudo bash -c "echo \"deb http://ftp.us.debian.org/debian testing main contrib non-free\" >> /etc/apt/sources.list"
|
|
sudo apt-get update
|
|
sudo apt-get install node-less cmake build-essential clang-format-6.0 flake8 uglifyjs python3-yaml chromium ccache
|
|
sudo apt-get install -t testing g++-8
|
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6
|
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8
|
|
sudo update-alternatives --set gcc /usr/bin/gcc-8
|
|
sudo ln -s /usr/bin/clang-format-6.0 /usr/bin/clang-format
|
|
|
|
sudo pip install virtualenv
|
|
|
|
virtualenv pyodide-env
|
|
|
|
source pyodide-env/bin/activate
|
|
|
|
pip install pytest pytest-xdist pytest-instafail selenium PyYAML
|
|
|
|
# Get recent version of Firefox and geckodriver
|
|
wget -O firefox.tar.bz2 https://download.mozilla.org/\?product\=firefox-nightly-latest-ssl\&os\=linux64\&lang\=en-US
|
|
tar jxf firefox.tar.bz2
|
|
wget https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz
|
|
tar zxf geckodriver-v0.21.0-linux64.tar.gz -C firefox
|
|
|
|
# Get recent version of chromedriver
|
|
wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip
|
|
unzip chromedriver_linux64.zip
|
|
mv chromedriver firefox
|
|
|
|
- run:
|
|
name: lint
|
|
command: |
|
|
source pyodide-env/bin/activate
|
|
make lint
|
|
|
|
- restore_cache:
|
|
keys:
|
|
- v1-emsdk-{{ checksum "emsdk/Makefile" }}-v6-
|
|
|
|
- run:
|
|
name: build
|
|
no_output_timeout: 1200
|
|
command: |
|
|
source pyodide-env/bin/activate
|
|
ccache -z
|
|
make
|
|
ccache -s
|
|
|
|
- save_cache:
|
|
paths:
|
|
- ./emsdk/emsdk
|
|
- ~/.ccache
|
|
key: v1-emsdk-{{ checksum "emsdk/Makefile" }}-v6-{{ .BuildNum }}
|
|
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- ./build
|
|
- ./pyodide-env
|
|
- ./firefox
|
|
|
|
- store_artifacts:
|
|
path: /home/circleci/repo/build/
|
|
|
|
test-firefox:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test
|
|
command: |
|
|
# This Debian is so old, it doesn't know about wasm as a mime type, which then
|
|
# causes Firefox to complain when loading it. Let's just add the new mime type.
|
|
sudo bash -c "echo 'application/wasm wasm' >> /etc/mime.types"
|
|
|
|
source pyodide-env/bin/activate
|
|
export PATH=$PWD/firefox:$PATH
|
|
pytest test -v -k firefox
|
|
|
|
test-chrome:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: test
|
|
command: |
|
|
# This Debian is so old, it doesn't know about wasm as a mime type, which then
|
|
# causes Firefox to complain when loading it. Let's just add the new mime type.
|
|
sudo bash -c "echo 'application/wasm wasm' >> /etc/mime.types"
|
|
|
|
source pyodide-env/bin/activate
|
|
export PATH=$PWD/firefox:$PATH
|
|
pytest test -v -k chrome
|
|
|
|
deploy:
|
|
machine:
|
|
enabled: true
|
|
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run:
|
|
name: Deploy to Github Pages
|
|
command: |
|
|
.circleci/deploy.sh
|
|
|
|
workflows:
|
|
version: 2
|
|
build-and-deploy:
|
|
jobs:
|
|
- build
|
|
- test-chrome:
|
|
requires:
|
|
- build
|
|
- test-firefox:
|
|
requires:
|
|
- build
|
|
- deploy:
|
|
requires:
|
|
- test-chrome
|
|
- test-firefox
|
|
filters:
|
|
branches:
|
|
only: master
|