Add bootstrap script to template #223
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) | |
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 |