-
Notifications
You must be signed in to change notification settings - Fork 5
129 lines (101 loc) · 3.92 KB
/
main.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
name: CI
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
schedule:
- cron: '0 2 * * *' # run at 2 AM UTC
jobs:
emscripten_wasm_build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
emsdk_ver: ["3.1.45"]
steps:
- uses: actions/checkout@v4
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v2
- name: Install micromamba
uses: mamba-org/setup-micromamba@v1
with:
environment-file: environment-wasm-build.yml
environment-name: xeus-javascript-wasm-build
################################################################
# emsdk itself
################################################################
- name: Setup emsdk
shell: bash -l {0}
run: |
emsdk install ${{ matrix.emsdk_ver }}
################################################################
# C++ build
################################################################
- name: Build
shell: bash -l {0}
run: |
emsdk activate ${{ matrix.emsdk_ver }}
source $CONDA_EMSDK_DIR/emsdk_env.sh
micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32
mkdir build
pushd build
export EMPACK_PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-javascript-wasm-build
export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-javascript-wasm-host
export CMAKE_PREFIX_PATH=$PREFIX
export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX
emcmake cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=$PREFIX \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \
..
make -j${{ steps.cpu-cores.outputs.count }} install
################################################################
# jupyterlite page
################################################################
- name: Build jupyterlite page
shell: bash -l {0}
run: |
export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-javascript-wasm-host
# build jupyterlite
jupyter lite build \
--contents=notebooks \
--XeusAddon.prefix=$PREFIX
################################################################
# fix permissions
################################################################
- name: Fix permissions
run: |
chmod -c -R +rX "build_wasm/_output/" | while read line; do
echo "::warning title=Invalid file permissions automatically fixed::$line"
done
################################################################
# upload to github pages
################################################################
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v2
with:
path: _output
# Deploy job (only for the repo and **not** for forks)
deploy:
# only run on main branch
if: github.ref == 'refs/heads/main' && github.repository == 'jupyter-xeus/xeus-javascript'
# Add a dependency to the build job
needs: emscripten_wasm_build
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
contents: read # to read the Pages artifact
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# Specify runner + deployment step
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v3 # or specific "vX.X.X" version tag for this action