Upgrading from v10 to v11¶
Prerequisites¶
The steps listed in this article require an existing local installation of InvenioRDM v10, please make sure that this is given!
If unsure, run invenio-cli install
from inside the instance directory before executing the listed steps.
Backup
Always backup your database and files before you try to perform an upgrade.
Older versions
In case you have an InvenioRDM installation older than v10, you can gradually upgrade using the existing instructions to v10 and afterwards continue from here.
Upgrade Steps¶
Upgrade your invenio-cli
Make sure you have the latest invenio-cli
, for InvenioRDM v11 the release is v1.0.14.
$ invenio-cli --version
invenio-cli, version 1.0.14
Virtual environments
In case you are not inside a virtual environment, make sure that you prefix each invenio
command with pipenv run
.
Python version change¶
As of InvenioRDM v11.0, only Python 3.9 is supported. This is because the official InvenioRDM Docker images now come with Python 3.9 only and it is not anymore configurable.
Developing with the same Python version as in deployed environments helps avoiding surprises when deploying code and it increases predictability.
We strongly suggest recreating your virtual environment with Python 3.9. If you are already using Python 3.9, you can simply skip this first part and change to the Upgrade InvenioRDM section.
The first step is to edit the <my-site>/Pipfile
:
[requires]
---python_version = "3.x"
+++python_version = "3.9"
and delete the Pipfile.lock
.
Container images
Update the base Docker image in the Dockerfile
, and rebuild the image if necessary:
---FROM inveniosoftware/centos8-python:3.8
+++FROM registry.cern.ch/inveniosoftware/almalinux:1
Note
Testing the Docker images locally requires Docker version 20.10.10+
.
Local development
Changing the Python version in your development environment highly depends on your setup, and there is no golden rule. One example would be to use PyEnv.
You should delete your virtualenv before running invenio-cli
or pipenv
commands below.
Risk of losing data
Your virtual env folder contains uploaded files in InvenioRDM, in var/instance/data
.
If you need to keep such files, make sure you copy them over to the new virtual env in the same location.
Upgrade InvenioRDM¶
Make sure that your virtual env is now running with Python 3.9.
Upgrade the RDM version:
cd <my-site>
# Upgrade to InvenioRDM v11
invenio-cli packages update 11.0.0
# Re-build assets
invenio-cli assets build
Optionally, update the file <my-site>/Pipfile
. This step is not necessary, but suggested for local development.
[packages]
---invenio-app-rdm = {extras = [...], version = "~=10.1.0"}
+++invenio-app-rdm = {extras = [...], version = "~=11.0.0"}
Database migration¶
Execute the database migration:
# Execute the database migration
invenio alembic upgrade
Data migration¶
Execute the data migration, note that there is no need to re-index the data:
pipenv run invenio shell $(find $(pipenv --venv)/lib/*/site-packages/invenio_app_rdm -name migrate_10_0_to_11_0.py)
The parsing of the ROR dump used for the Funders vocabulary has
been improved, adding the actual ROR identifier to the identifiers
field.
You can see how to update your data in the Funders vocabulary section.
Update my-site
folder¶
With InvenioRDM v11, the template to generate a new instance has been updated, adding more files and folders. It is now easier to add translations and custom code.
To upgrade your running instance and have the same new files, the easiest way is to:
- Setup a new InvenioRDM instance v11 aside (
invenio-cli init rdm -c v11.0
), using the exact same values of your running instance when answering the questions of the instance generator. -
Copy the following folders from the new instance and paste them in your running instance:
site/
translations/