Skip to content

Add flake module (#523) #956

Add flake module (#523)

Add flake module (#523) #956

Workflow file for this run

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 }}
- 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