Add bootstrap script to template #218
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: | |
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) | |
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 | |
YARN_ENABLE_IMMUTABLE_INSTALLS=false python bootstrap.py | |
./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) | |
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 . myextension | |
pushd $tmpfolder | |
YARN_ENABLE_IMMUTABLE_INSTALLS=false python bootstrap.py | |
./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) | |
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 | |
YARN_ENABLE_IMMUTABLE_INSTALLS=false python bootstrap.py | |
# 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 | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
run: | | |
tmpfolder=$(mktemp -d) | |
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 | |
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 $tmpfolder | |
shell: bash | |
- name: Create server extension pip develop | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
run: | | |
tmpfolder=$(mktemp -d) | |
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 bootstrap.py | |
# 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 | |
- name: Build server extension in develop mode | |
run: | | |
jupyter labextension build $tmpfolder | |
jupyter labextension uninstall myextension | |
python -m pip uninstall -y myextension jupyterlab | |
- run: | | |
set -eux | |
rm -rf $tmpfolder | |
shell: bash | |
- name: Install server extension from a tarball | |
env: | |
YARN_ENABLE_IMMUTABLE_INSTALLS: false | |
run: | | |
tmpfolder=$(mktemp -d) | |
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 | |
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 $tmpfolder/dist/*.tar.gz myextension.tar.gz | |
cp $tmpfolder/dist/*.whl myextension.whl | |
python -m pip uninstall -y myextension jupyterlab | |
rm -rf $tmpfolder | |
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 | |
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 | |
YARN_ENABLE_IMMUTABLE_INSTALLS=false python bootstrap.py | |
./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) | |
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 | |
YARN_ENABLE_IMMUTABLE_INSTALLS=false python bootstrap.py | |
./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 | |
shell: bash -el {0} | |
run: | | |
tmpfolder=$(mktemp -d) | |
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 $tmpfolder | |
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 }} | |
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 |