notebook
notebook copied to clipboard
Workflow to update JupyterLab dependencies automatically
Issue- #7271
Description: This workflow can be used to update all the jupyterlab dependecies to the latest release. This can also be manually triggered, which takes the JupyterLab version as an input.
Things to re-visit:
- Github secrets, user, email - to create branch and raise PR.
- Executing "yarn install" post dependency updates results in a substantial amount of modifications, with over 15,000 additions and 15,000 deletions. - Done
- Scheduling time for cron job.
The created PR looks like - Sample pull-request
Feel free to adapt the workflow based on your requirements.
Thanks @itsmevichu for looking into this!
Executing "yarn install" post dependency updates results in a substantial amount of modifications, with over 15,000 additions and 15,000 deletions.
Maybe it's because it's using the default yarn (version 1), while the repo here uses yarn 3 via jlpm
. So we would probably need to install jupyterlab
and use jlpm
.
Thanks @itsmevichu.
Looks like this needs a lint pass.
@jtpio The lint check is failing because of the coverage for the scripts. Is it possible for us to exclude the "scripts" folder from coverage checks?
@jtpio I am fetching the latest versions of the lab dependencies from the below URL - https://raw.githubusercontent.com/jupyterlab/jupyterlab/v4.1.4/jupyterlab/staging/package.json.
The package "@jupyterlab/testutils" is not present in the above package.json. As a result, only that specific package won't get updated by this workflow.
@jtpio The lint check is failing because of the coverage for the scripts. Is it possible for us to exclude the "scripts" folder from coverage checks?
Yes I think so. An alternative could be to write the scripts in TypeScript and put them alongside other scripts here: https://github.com/jupyter/notebook/tree/main/buildutils/src
The package "@jupyterlab/testutils" is not present in the above package.json. As a result, only that specific package won't get updated by this workflow.
Right it's fine, we only need to update the packages used here in the notebook repo.
@jtpio I have converted the scripts to typescript and included them in the buildutils.
Pending tasks:
- To refer the appropriate secrets. https://github.com/jupyter/notebook/blob/2154f0f039e9a5f3b8c42f94934dc8f6023b7ecd/.github/workflows/upgrade-juypterlab-dependencies.yml#L67-L68
- Cron job timings. https://github.com/jupyter/notebook/blob/2154f0f039e9a5f3b8c42f94934dc8f6023b7ecd/.github/workflows/upgrade-juypterlab-dependencies.yml#L5
@jtpio Are any changes needed in this PR? If not, we could simply utilize this workflow, as it would minimize the effort required to upgrade dependencies with each JupyterLab release.
It would be really handy to have this in!
It looks like it missed one package, "@jupyterlab/testutils": ~4.2.0
@jtpio I am fetching the latest versions of the lab dependencies from the below URL - https://raw.githubusercontent.com/jupyterlab/jupyterlab/v4.1.4/jupyterlab/staging/package.json.
The package "@jupyterlab/testutils" is not present in the above package.json. As a result, only that specific package won't get updated by this workflow.
I noticed the same, but it seems that the @jupyterlab/testutils information is not present in our source package.json.
I noticed the same, but it seems that the @jupyterlab/testutils information is not present in our source package.json.
I think it is under devDependencies
.
I noticed the same, but it seems that the @jupyterlab/testutils information is not present in our source package.json.
I think it is under
devDependencies
.
I've looked through, it appears to be missing from devDependencies. Can I proceed adding it in the respective jupyterlab's package.json?
See this commit: https://github.com/jupyter/notebook/pull/7447/commits/f7f2ead7eb1575b42b0f438acdbb467949b642db
See this commit: f7f2ead
It seems there was a misunderstanding. The source from which we get the latest release version https://raw.githubusercontent.com/jupyterlab/jupyterlab/v4.2.0/jupyterlab/staging/package.json doesn't include the @jupyterlab/testutils package, which is why the script isn't updating it here. I think we need to add this as a devDependency in the source jupyterlab/jupyterlab/staging/package.json
first.