Making a release

We should release early & often, following semver wherever possible.

Packages in this repository

This repo has more than one package.

  1. The primary jupyter-server-proxy python package. This contains the actual proxying code, and the classic notebook extension. This is published on PyPI.
  2. The JupyterLab plugin, jupyterlab-server-proxy. This provides the launcher icons in JupyterLab.
  3. Various python packages in contrib/. These are convenience packages that help set up a particular application for use - such as RStudio or Theia.

We try to keep the version numbers of all these packages in sync, even when there are no changes. This keeps reasoning about versions simple.

Gaining Access Privileges

Before making a release, you need access privileges for the following.

  1. Write access to the GitHub repo.
  2. Publish access to the various python packages on PyPI.
  3. Publish access to the JupyterLab plugin on NPM.

Release checklist

  1. Update the package version number in

  2. Update the JupyterLab plugin’s version to match, in jupyterlab-server-proxy/package.json. We keep these two versions in sync to avoid figuring out a matrix of ‘which version of the python package is compatible with which version of the JupyterLab plugin?’

  3. Commit these changes and make a pull request with it.

  4. Once pull request is merged, make a tag of form v<version-number>:

    git tag -a v<version-number>

    And push it to the official repository

    git push --tags
  5. Publish the package on PyPI

    pip install twine
    rm -rf dist/*
    python3 sdist bdist_wheel
    twine upload dist/*
  6. Publish the JupyterLab plugin on npm

    cd jupyterlab-server-proxy
    npm install
    npm login
    npm publish