Skip to content

Add bootstrap script to template #223

Add bootstrap script to template

Add bootstrap script to template #223

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches: ["*"]
schedule:
- cron: "0 0 * * *"
jobs:
names:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: "my_extension"
pyname: "my_extension"
- name: "myextension"
pyname: "myextension"
- name: "my-extension"
pyname: "my_extension"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time "pydantic<2.0.0"
- name: Create pure frontend extension
env:
NAME: ${{ matrix.name }}
PYNAME: ${{ matrix.pyname }}
run: |
set -eux
tmpfolder=$(mktemp -d)
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d author_name="My Name" -d labextension_name="${NAME}" -d python_name="${PYNAME}" -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
pushd $tmpfolder
./scripts/pre-commit
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "${NAME}.*OK"
python -m jupyterlab.browser_check
jupyter labextension uninstall ${NAME}
python -m pip uninstall -y ${NAME} jupyterlab
popd
rm -rf $tmpfolder
no-tests:
runs-on: ubuntu-latest
strategy:
matrix:
# This will be used by the base setup action
python-version: ["3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time "pydantic<2.0.0"
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create pure frontend extension
run: |
set -eux
tmpfolder=$(mktemp -d)
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d author_name="My Name" -d test=n -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
pushd $tmpfolder
./scripts/pre-commit
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
python -m jupyterlab.browser_check
jupyter labextension uninstall myextension
pip uninstall -y myextension jupyterlab
popd
rm -rf $tmpfolder
settings:
runs-on: ubuntu-latest
strategy:
matrix:
# This will be used by the base setup action
python-version: ["3.8", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time "pydantic<2.0.0"
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create pure frontend extension
run: |
set -eux
tmpfolder=$(mktemp -d)
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d author_name="My Name" -d has_settings=y -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
pushd $tmpfolder
# It is not easily possible to get this version compatible with linter rules
jlpm lint
./scripts/pre-commit
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
python -m jupyterlab.browser_check
jupyter labextension uninstall myextension
pip uninstall -y myextension jupyterlab
popd
rm -rf $tmpfolder
server:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
# This will be used by the base setup action
python-version: ["3.8", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time build "pydantic<2.0.0"
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create server extension pip install
id: create-extension-1
env:
COPIER_SKIP_INSTALL_TASK: '1'
run: |
tmpfolder=$(mktemp -d)
echo "extension_folder=${tmpfolder}" >> "$GITHUB_OUTPUT"
python -m copier copy -l -d kind=server -d author_name="My Name" -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
cd $tmpfolder
cat pyproject.toml
YARN_ENABLE_IMMUTABLE_INSTALLS=false pip install .
pip install "jupyterlab>=4.0.0,<5"
- name: Check pip install method
run: |
set -eux
jupyter server extension list
jupyter server extension list 2>&1 | grep -ie "myextension.*OK"
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
# This test should be made outside the extension folder
python -m jupyterlab.browser_check
pip uninstall -y myextension jupyterlab
rm -rf "${{ steps.create-extension-1.outputs.extension_folder }}"
shell: bash
- name: Create server extension pip develop
id: create-extension-2
run: |
tmpfolder=$(mktemp -d)
echo "extension_folder=${tmpfolder}" >> "$GITHUB_OUTPUT"
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d kind=server -d author_name="My Name" -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
cd ${tmpfolder}
# Check unit tests are passing
python -m pytest -vv -r ap --cov myextension
- name: Check pip develop method
run: |
set -eux
jupyter server extension list
jupyter server extension list 2>&1 | grep -ie "myextension.*OK"
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
# This test should be made outside the extension folder
python -m jupyterlab.browser_check
shell: bash
- name: Check rerunning bootstrap.py
run: |
set -eux
python bootstrap.py
shell: bash
working-directory: ${{ steps.create-extension-2.outputs.extension_folder }}
- name: Build server extension in develop mode
run: |
jupyter labextension build "${{ steps.create-extension-2.outputs.extension_folder }}"
jupyter labextension uninstall myextension
python -m pip uninstall -y myextension jupyterlab
- run: |
set -eux
rm -rf "${{ steps.create-extension-2.outputs.extension_folder }}"
shell: bash
- name: Install server extension from a tarball
id: create-extension-3
env:
COPIER_SKIP_INSTALL_TASK: '1'
run: |
tmpfolder=$(mktemp -d)
echo "extension_folder=${tmpfolder}" >> "$GITHUB_OUTPUT"
python -m copier copy -l -d kind=server -d author_name="My Name" -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
cd ${tmpfolder}
python -m pip install "jupyterlab>=4.0.0,<5"
jupyter lab clean --all
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m build ${tmpfolder}
cd dist
python -m pip install myextension-0.1.0.tar.gz
- name: Check install tarball method
run: |
set -eux
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
jupyter server extension list
jupyter server extension list 2>&1 | grep -ie "myextension.*OK"
jupyter lab build --dev-build --no-minimize
python -m jupyterlab.browser_check
cp "${{ steps.create-extension-3.outputs.extension_folder }}"/dist/*.tar.gz myextension.tar.gz
cp "${{ steps.create-extension-3.outputs.extension_folder }}"/dist/*.whl myextension.whl
python -m pip uninstall -y myextension jupyterlab
rm -rf "${{ steps.create-extension-3.outputs.extension_folder }}"
shell: bash
- uses: actions/upload-artifact@v2
if: startsWith(runner.os, 'Linux')
with:
name: myextension-sdist
path: |
myextension.tar.gz
myextension.whl
test_isolated:
needs: server
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: "x64"
- name: Setup pip cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: pip-3.7-${{ hashFiles('package.json') }}
restore-keys: |
pip-3.7-
pip-
- uses: actions/download-artifact@v2
with:
name: myextension-sdist
- name: Install and Test
run: |
set -eux
# Remove NodeJS, twice to take care of system and locally installed node versions.
sudo rm -rf $(which node)
sudo rm -rf $(which node)
python -m pip install myextension.tar.gz
python -m pip install "jupyterlab>=4.0.0,<5"
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
jupyter server extension list
jupyter server extension list 2>&1 | grep -ie "myextension.*OK"
python -m jupyterlab.browser_check --no-browser-test
theme:
runs-on: ubuntu-latest
strategy:
matrix:
# This will be used by the base setup action
python-version: ["3.8", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time build "pydantic<2.0.0"
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create pure frontend extension
run: |
set -eux
mkdir mytheme
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d kind=theme -d author_name="My Name" -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . mytheme
pushd mytheme
./scripts/pre-commit
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "mytheme.*OK"
python -m jupyterlab.browser_check
jupyter labextension uninstall mytheme
python -m pip uninstall -y mytheme jupyterlab
popd
rm -rf mytheme
mimerenderer:
runs-on: ubuntu-latest
strategy:
matrix:
# This will be used by the base setup action
python-version: ["3.8", "3.11"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time build "pydantic<2.0.0"
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create pure frontend extension
run: |
set -eux
tmpfolder=$(mktemp -d)
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d kind=mimerenderer -d viewer_name="My Viewer" -d mimetype="application/vnd.my_org.my_type" -d mimetype_name="my_type" -d file_extension=".my_type" -d author_name="My Name" -d repository="https://github.com/test/lab-extension" -d venv="none" --vcs-ref HEAD --UNSAFE . $tmpfolder
pushd $tmpfolder
./scripts/pre-commit
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
python -m jupyterlab.browser_check
jupyter labextension uninstall myextension
python -m pip uninstall -y myextension jupyterlab
popd
rm -rf $tmpfolder
conda_boostrap:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
auto-activate-base: true
activate-environment: ""
- name: Install dependencies
shell: bash -el {0}
run: |
python -m pip install "copier>=8.0.0" jinja2-time "pydantic<2.0.0"
- name: Setup Git
shell: bash -el {0}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create server extension with conda
id: create-extension
shell: bash -el {0}
run: |
tmpfolder=$(mktemp -d)
echo "extension_folder=${tmpfolder}" >> "$GITHUB_OUTPUT"
YARN_ENABLE_IMMUTABLE_INSTALLS=false python -m copier copy -l -d kind=server -d author_name="My Name" -d repository="https://github.com/test/lab-extension" --vcs-ref HEAD --UNSAFE . $tmpfolder
- name: Check conda environment
shell: bash -el {0}
run: |
set -eux
conda env list | grep -ie "myextension_dev"
conda activate myextension_dev
jupyter server extension list
jupyter server extension list 2>&1 | grep -ie "myextension.*OK"
jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "myextension.*OK"
# This test should be made outside the extension folder
python -m jupyterlab.browser_check
pip uninstall -y myextension jupyterlab
rm -rf "${{ steps.create-extension.outputs.extension_folder }}"
pnpm_linker:
runs-on: ubuntu-latest
strategy:
matrix:
kind: ["frontend", "server", "theme"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install "copier>=8.0.0" jinja2-time "pydantic<2.0.0"
- name: Setup Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Create pure frontend extension
env:
KIND: ${{ matrix.kind }}
COPIER_SKIP_INSTALL_TASK: '1'
run: |
set -eux
tmpfolder=$(mktemp -d)
python -m copier copy -l -d kind=${KIND} -d author_name="My Name" -d labextension_name=myextension -d repository="https://github.com/test/lab-extension" --vcs-ref HEAD --UNSAFE . $tmpfolder
pushd $tmpfolder
sed -i 's/^\(nodeLinker:\s\).*$/\1pnpm/' .yarnrc.yml
python -m pip install "jupyterlab>=4.0.0,<5"
YARN_ENABLE_IMMUTABLE_INSTALLS=false jlpm
if [ ! -d node_modules/.store ] ; then echo 'nodes_module directory should contain a .store directory when using pnpm nodeLinker'; exit 1; fi;
jlpm build
popd
rm -rf $tmpfolder