Release Cycle

Docker PyPI Docker Image Version (latest semver) CI CD Release Cycle Release CD API Schema

PyPi Versioning

We follow the semantic versioning, numbered with x.y.z. By default, pip install jina always install the latest release. To install a particular version from PyPi, please use:

pip install jina==x.y.z

Docker Image Versioning

The docker image name starts with jinaai/jina followed by a tag composed as three parts:

  • {version}: The version of Jina. Possible values:

    • latest: the last release;

    • master: the master branch of jina-ai/jina repository;

    • x.y.z: the release of a particular version;

    • x.y: the alias to the last x.y.z patch release, i.e. x.y = x.y.max(z);

  • {python_version}: The Python version of the image. Possible values:

    • , -py37: Python 3.7;

    • -py38 for Python 3.8;

  • {extra}: the extra dependency installed along with Jina. Possible values:

    • : Jina is installed inside the image via pip install jina;

    • -devel: Jina is installed inside the image via pip install jina[devel];

    • -daemon: Jina is installed inside the image via pip install jina[dameon] along with fluentd; and the entrypoint is set to jinad.


  • 0.9.6: the 0.9.6 release with Python 3.7 and the entrypoint of jina.

  • latest-py38-daemon: the latest release with Python 3.8 base and the entrypoint of Jina daemon.

  • latest: the latest release with Python 3.7 and the entrypoint of jina

  • master: the master with Python 3.7 and the entrypoint of jina

Do I need -devel?

Use -devel image, if you want to use:

  • REST interface

  • Jina daemon (use -daemon)

  • Dashboard

  • Log-streaming

Image Alias & Update

Timing Affected tags
On Master Merge jinaai/jina:master{python_version}{extra}
On x.y.z release jinaai/jina:latest{python_version}{extra}, jinaai/jina:x.y.z{python_version}{extra}, jinaai/jina:x.y{python_version}{extra}

, where

  • {python_version} = ["-py37", "-py38"]

  • {extra} = ["", "-devel", "-daemon"]

Image Size of Different Versions

Image Size

The last update image is Docker Image Version (latest semver)

Master Update

Every successful merge into the master triggers a development release. It will:

  • update the Docker image with tag devel;

  • update jina-ai/docs tag devel

Note, commits started with chore are exceptions and will not trigger the events above. Right now these commits are:

  • chore(docs): update TOC

  • chore(version): bumping master version

Sunday Auto Release

On every Sunday 23pm, a patch release is scheduled:

  • tag the master as vx.y.z and push to the repo;

  • create a new tag vx.y.z in jina-ai/docs;

  • publish x.y.z docker image, with tag latest, x.y.z;

  • upload x.y.z package on PyPI;

  • bump the master to x.y.(z+1) and commit a chore(version) push.

The current master version should always be one version ahead of git tag -l | sort -V | tail -n1.