Fix ci (#563) #1015
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: | |
push: | |
branches: | |
- main | |
pull_request: | |
jobs: | |
build: | |
name: Build jupyterlab (no kernels) | |
runs-on: ubuntu-latest | |
outputs: | |
kernels: ${{ steps.kernels.outputs.kernels }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup | |
uses: ./.github/actions/common-setup | |
with: | |
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_TWEAG_JUPYTER_NIX_AUTH_TOKEN }} | |
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: List all example kernels | |
id: kernels | |
env: | |
# Should only be needed until we use a `cachinx/install-nix` action that contains | |
# https://github.com/cachix/install-nix-action/pull/152 (should be in `v19`) | |
NIX_CONFIG: "extra-access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}" | |
run: | | |
kernels=$(nix eval .#packages.x86_64-linux --apply builtins.attrNames --json) | |
echo $kernels | |
filterKernels=$(echo $kernels | nix run nixpkgs#jq -- -c '[.[] | select(. | contains("jupyterlab-kernel-example-")) | ltrimstr("jupyterlab-kernel-")]') | |
echo "kernels=$filterKernels" >> $GITHUB_OUTPUT | |
- name: Check | |
run: | | |
nix flake check --show-trace -L | |
build-kernel: | |
name: Build ${{ matrix.kernel }} kernel | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
kernel: ${{ fromJSON(needs.build.outputs.kernels) }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup | |
uses: ./.github/actions/common-setup | |
with: | |
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_TWEAG_JUPYTER_NIX_AUTH_TOKEN }} | |
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build ${{ matrix.kernel }} kernel | |
run: | | |
nix build -L .#jupyterlab-kernel-${{ matrix.kernel }} | |
- name: Test notebook for ${{ matrix.kernel }} kernel | |
run: | | |
echo 'If Julia fails, see if IJulia was updated recently.' | |
result/bin/python examples/$( echo "${{ matrix.kernel }}" | sed -e "s|example-||" | sed -e "s|-|/|g" )/test.py | |
build-all-kernels: | |
name: Build all kernels | |
needs: build-kernel | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# Workaround for System.IO.IOException: No space left on device | |
# https://github.com/actions/runner-images/issues/10699#issuecomment-2402475892 | |
- name: Clean up disk space | |
run: | | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /usr/local/lib/android | |
sudo rm -rf /opt/ghc | |
- name: Setup | |
uses: ./.github/actions/common-setup | |
with: | |
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_TWEAG_JUPYTER_NIX_AUTH_TOKEN }} | |
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build all kernels | |
run: | | |
nix build -L .#jupyterlab-all-example-kernels | |
build-devshell: | |
name: Build devshell | |
needs: build-kernel | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup | |
uses: ./.github/actions/common-setup | |
with: | |
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_TWEAG_JUPYTER_NIX_AUTH_TOKEN }} | |
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build all kernels | |
run: | | |
nix build -L .\#devShells.x86_64-linux.default | |
build-docs: | |
name: Build docs | |
needs: build-kernel | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup | |
uses: ./.github/actions/common-setup | |
with: | |
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_TWEAG_JUPYTER_NIX_AUTH_TOKEN }} | |
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build docs | |
run: | | |
nix build -L .#docs | |
mkdir ./public | |
cp -R ./result/* ./public/ | |
chmod -R +w ./public/ | |
- name: Publish to Netlify | |
uses: nwtgck/[email protected] | |
env: | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
with: | |
production-branch: 'main' | |
production-deploy: ${{ github.event_name == 'push' }} | |
publish-dir: 'public' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
deploy-message: 'Published from GitHub Actions' | |
enable-pull-request-comment: true | |
overwrites-pull-request-comment: false | |
enable-commit-comment: false | |
enable-commit-status: true | |
if: github.repository_owner == 'tweag' | |
template: | |
name: Test a template | |
needs: build-kernel | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: repo | |
fetch-depth: 0 | |
- name: Setup | |
uses: ./repo/.github/actions/common-setup | |
with: | |
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_TWEAG_JUPYTER_NIX_AUTH_TOKEN }} | |
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Initialize template | |
run: | | |
nix flake new --template path:$PWD/repo example | |
- name: Build | |
run: | | |
pushd ./example | |
nix build --override-input jupyenv ../repo --show-trace -L | |
popd | |
# TODO this should not be dependent on the example kernels tests as the kernel names are different | |
- name: Test | |
run: | | |
pushd ./repo/examples/python/minimal | |
sed -i -e "s|python-minimal-example|python-minimal|" test.py | |
popd | |
./example/result/bin/python ./repo/examples/python/minimal/test.py |