Upgrading from Invenio v3.3 to v3.4

If you have your instance of Invenio v3.3 already up and running and you would like to upgrade to version v3.4 you don’t need to set up your project from scratch. The goal of this guide is to show the steps to upgrade your project without losing any of your work.

Bootstrap 3 to Semantic UI

You can upgrade to Invenio v3.4 without migrating to Semantic UI. However, Invenio v3.4 is deprecating the Bootstrap 3 templates, thus you should already now plan on allocating time for migrating your templates to Semantic UI during 2021.

Pipfile modifications

The most important changes that you will have to make are in Pipfile.

  1. Change the Invenio version:

invenio = { version = ">=3.4.0,<3.5.0", extras = ["base", "auth", "metadata", "files", "postgresql", "elasticsearch7" ]}
  1. Make sure that your database and Elasticsearch version matches your installation. In above example the database is postgresql and the Elasticsearch version is elasticsearch7.

  2. Add the following line to Pipfile (note that most pytest dependencies are now managed via pytest-invenio):

-Babel = ">=2.4.0"
-Flask-BabelEx = ">=0.9.3"
+lxml = ">=4.3.0,<5.0.0"
-check-manifest = ">=0.35"
-coverage = ">=4.4.1"
-Flask-Debugtoolbar = ">=0.10.1"
-isort = ">=4.3"
-mock = ">=2.0.0"
-pydocstyle = ">=2.0.0"
-pytest = ">=3.3.1"
-pytest-cov = ">=2.5.1"
-pytest-invenio = ">=1.2.1,<1.3.0"
-pytest-mock = ">=1.6.0"
-pytest-pep8 = ">=1.0.6"
-pytest-random-order = ">=0.5.4"
-pytest-runner = ">=3.0.0,<5"
-Sphinx = ">=1.5.1"
+pytest-invenio = ">=1.4.1,<1.5.0"
+Sphinx = ">=3,<4"
  1. Add the following line to your config.py file:

APP_THEME = ['bootstrap3']
  1. Remove your Pipfile.lock file and run ./scripts/bootstrap

Celery 5.0.x

Following is only applicable if you use Celery 5.0.x.

  1. First check which version of Celery you use by running pipenv run pip freeze | grep ^celery.

  2. Apply the following changes to scripts/server:

-pipenv run celery worker -A invenio_app.celery -l INFO & pid_celery=$!
+pipenv run celery -A invenio_app.celery worker -l INFO & pid_celery=$!
  1. Apply the following changes to docker-compose.full.yml:

-    command: ["celery worker -A invenio_app.celery --loglevel=INFO"]
+    command: ["celery -A invenio_app.celery worker --loglevel=INFO"]