# Making a new release of JupyterLab Classic This process is still a bit manual and consists in running a couple of commands. This should normally be possible to automate the process at some point. ## Getting a clean environment Creating a new environment can help avoid pushing local changes and any extra tag. ```bash mamba create -q -y -n jupyterlab-classic-release -c conda-forge twine nodejs jupyter-packaging jupyterlab -y conda activate jupyterlab-classic-release ``` Alternatively, the local repository can be cleaned with: ```bash git clean -fdx ``` ## Releasing on PyPI Make sure the `dist/` folder is empty. 1. Update [jupyterlab_classic/\_version.py](./jupyterlab_classic/_version.py) with the new version number 2. Commit the changes - `git add jupyterlab_classic/_version.py` - `git commit -m "Release x.y.z"` 3. Bump the frontend packages: - `jlpm` - `jlpm run lerna version x.y.z --no-push --amend --force-publish` 4. Run: `python setup.py sdist bdist_wheel` 5. Double check the size of the bundles in the `dist/` folder 6. Test the release by installing the wheel or sdist: `python -m pip install ./dist/jupyterlab_classic-x.y.z-py3-none-any.whl 7. `export TWINE_USERNAME=mypypi_username` 8. `twine upload dist/*` ## Releasing on conda-forge The simplest is to wait for the bot to automatically open the PR. Alternatively, to do the update manually: 1. Open a new PR on https://github.com/conda-forge/jupyterlab-classic-feedstock to update the `version` and the `sha256` hash 2. Wait for the tests 3. Merge the PR The new version will be available on `conda-forge` soon after. ## Publish the packages to npm 1. Publish the packages: `jlpm run lerna publish from-package` ## Committing and tagging Push the release commit to the `main` branch: ```bash git push origin main ``` Then create a new release from the GitHub interface.