-
Notifications
You must be signed in to change notification settings - Fork 1
136 lines (115 loc) · 4.26 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: Build Recipes
on:
push:
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install latest pyodide-build and build dependencies
run : |
pip install git+https://github.com/pyodide/pyodide.git@main#subdirectory=pyodide-build
pip install setuptools --upgrade
pyodide xbuildenv install --download --url http://pyodide-cache.s3-website-us-east-1.amazonaws.com/xbuildenv/dev/xbuildenv.tar.bz2
sudo apt update
sudo apt upgrade
sudo apt install gfortran f2c pkg-config
- name: Check emscripten version
run: |
echo EMSCRIPTEN_VERSION=$(pyodide config get emscripten_version) >> $GITHUB_ENV
- uses: mymindstorm/setup-emsdk@v11
with:
version: ${{ env.EMSCRIPTEN_VERSION }}
- name: Calculate recipes to build (pull_request)
if: github.event_name == 'pull_request'
id: calculate_recipes_pr
run: |
CHANGED_RECIPES=$(python ./tools/calc_diff.py \
--base ${{ github.base_ref }} \
--target ${{ github.head_ref }})
# If there are no changed recipes, we build only core packages sets
if [ -z "$CHANGED_RECIPES" ]; then
echo "recipes=tag:core" >> "$GITHUB_OUTPUT"
else
echo "recipes=$CHANGED_RECIPES,tag:core" >> "$GITHUB_OUTPUT"
fi
- name: Build recipes (full)
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[full build]') }}
run: |
# FIXME: move to pyodide-build
export PKG_CONFIG_PATH=$(pwd)/packages/.libs/lib/pkgconfig
pyodide build-recipes "*" --install --install-dir=./repodata
- name: Build recipes (changed only)
if: github.event_name == 'pull_request' && !contains(github.event.head_commit.message, '[full build]')
run: |
# FIXME: move to pyodide-build
export PKG_CONFIG_PATH=$(pwd)/packages/.libs/lib/pkgconfig
pyodide build-recipes ${{ steps.calculate_recipes_pr.outputs.recipes }} --install --install-dir=./repodata
- name: Store artifacts build
uses: actions/upload-artifact@v2
with:
name: repodata
path: ./repodata/
retention-days: 15
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
./repodata/*.whl
test:
runs-on: ubuntu-latest
needs: [build]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
test-config: [
{runner: selenium, runtime: chrome, runtime-version: latest },
]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Download latest Pyodide
run: |
wget http://pyodide-cache.s3-website-us-east-1.amazonaws.com/xbuildenv/dev/pyodide-core.tar.bz2
tar -xvf pyodide-core.tar.bz2
mv pyodide dist
- uses: pyodide/pyodide-actions/install-browser@v1
with:
runner: ${{ matrix.test-config.runner }}
browser: ${{ matrix.test-config.runtime }}
browser-version: ${{ matrix.test-config.runtime-version }}
- name: Install requirements
shell: bash -l {0}
run: |
python3 -m pip install pytest pytest-pyodide pytest-httpserver
- name: Download build artifact
uses: actions/download-artifact@v2
with:
name: repodata
path: ./repodata/
- name: Copy repodata
run: |
cp ./repodata/* ./dist/
- name: Run tests
run: |
# FIXME: skip webworker tests
pytest -v \
--dist-dir=./dist/ \
--runner=${{ matrix.test-config.runner }} \
--rt ${{ matrix.test-config.runtime }} \
-k "not webworker" \
packages