CI #306
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |