Refactor jupyenv #906
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@v3 | |
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@v3 | |
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 }} | |
# TODO remove once we have a better solution. For more info see | |
# https://github.com/tweag/jupyterWith/pull/280 | |
- name: Install IJulia | |
if: contains(matrix.kernel, 'julia') | |
run: | | |
result/bin/julia examples/$( echo "${{ matrix.kernel }}" | sed -e "s|example-||" | sed -e "s|-|/|g" )/installDeps.jl | |
- 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@v3 | |
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 .#jupyterlab-all-example-kernels | |
build-devshell: | |
name: Build devshell | |
needs: build-kernel | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
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@v3 | |
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@v3 | |
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 | |
sed -i -e "s|github:tweag/jupyterWith|path:$PWD/../repo|" flake.nix | |
nix build | |
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 |