upgrade.rst
250 lines
| 8.2 KiB
| text/x-rst
|
RstLexer
/ docs / upgrade.rst
Søren Løvborg
|
r5917 | .. _upgrade: | ||
=================== | ||||
Upgrading Kallithea | ||||
=================== | ||||
This describes the process for upgrading Kallithea, independently of the | ||||
Kallithea installation method. | ||||
Søren Løvborg
|
r5976 | .. note:: | ||
If you are upgrading from a RhodeCode installation, you must first | ||||
install Kallithea 0.3.2 and follow the instructions in the 0.3.2 | ||||
README to perform a one-time conversion of the database from | ||||
RhodeCode to Kallithea, before upgrading to the latest version | ||||
of Kallithea. | ||||
Søren Løvborg
|
r5917 | |||
1. Stop the Kallithea web application | ||||
------------------------------------- | ||||
This step depends entirely on the web server software used to serve | ||||
Kallithea, but in any case, Kallithea should not be running during | ||||
the upgrade. | ||||
.. note:: | ||||
If you're using Celery, make sure you stop all instances during the | ||||
upgrade. | ||||
2. Create a backup of both database and configuration | ||||
----------------------------------------------------- | ||||
You are of course strongly recommended to make backups regularly, but it | ||||
is *especially* important to make a full database and configuration | ||||
backup before performing a Kallithea upgrade. | ||||
Back up your configuration | ||||
^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||
Make a copy of your Kallithea configuration (``.ini``) file. | ||||
Thomas De Schampheleire
|
r8421 | If you are using custom :ref:`extensions <customization>`, you should also | ||
make a copy of the ``extensions.py`` file. | ||||
Søren Løvborg
|
r5917 | |||
Back up your database | ||||
^^^^^^^^^^^^^^^^^^^^^ | ||||
If using SQLite, simply make a copy of the Kallithea database (``.db``) | ||||
file. | ||||
If using PostgreSQL, please consult the documentation for the ``pg_dump`` | ||||
utility. | ||||
Mads Kiilerich
|
r8313 | If using MariaDB/MySQL, please consult the documentation for the ``mysqldump`` | ||
Søren Løvborg
|
r5917 | utility. | ||
Thomas De Schampheleire
|
r6177 | Look for ``sqlalchemy.url`` in your configuration file to determine | ||
Thomas De Schampheleire
|
r7414 | database type, settings, location, etc. If you were running Kallithea 0.3.x or | ||
older, this was ``sqlalchemy.db1.url``. | ||||
Søren Løvborg
|
r5917 | |||
Thomas De Schampheleire
|
r7501 | 3. Activate or recreate the Kallithea virtual environment (if any) | ||
------------------------------------------------------------------ | ||||
.. note:: | ||||
If you did not install Kallithea in a virtual environment, skip this step. | ||||
Søren Løvborg
|
r5917 | |||
Thomas De Schampheleire
|
r7501 | For major upgrades, e.g. from 0.3.x to 0.4.x, it is recommended to create a new | ||
virtual environment, rather than reusing the old. For minor upgrades, e.g. | ||||
within the 0.4.x range, this is not really necessary (but equally fine). | ||||
To create a new virtual environment, please refer to the appropriate | ||||
installation page for details. After creating and activating the new virtual | ||||
environment, proceed with the rest of the upgrade process starting from the next | ||||
section. | ||||
To reuse the same virtual environment, first activate it, then verify that you | ||||
are using the correct environment by running:: | ||||
Søren Løvborg
|
r5917 | |||
pip freeze | ||||
This will list all packages installed in the current environment. If | ||||
Thomas De Schampheleire
|
r7501 | Kallithea isn't listed, deactivate the environment and then activate the correct | ||
one, or recreate a new environment. See the appropriate installation page for | ||||
details. | ||||
Søren Løvborg
|
r5917 | |||
4. Install new version of Kallithea | ||||
----------------------------------- | ||||
Please refer to the instructions for the installation method you | ||||
originally used to install Kallithea. | ||||
If you originally installed using pip, it is as simple as:: | ||||
pip install --upgrade kallithea | ||||
Thomas De Schampheleire
|
r7411 | If you originally installed from version control, assuming you did not make | ||
private changes (in which case you should adapt the instructions accordingly):: | ||||
Søren Løvborg
|
r5917 | |||
cd my-kallithea-clone | ||||
Thomas De Schampheleire
|
r7411 | hg parent # make a note of the original revision | ||
hg pull | ||||
hg update | ||||
hg parent # make a note of the new revision | ||||
Thomas De Schampheleire
|
r6703 | pip install --upgrade -e . | ||
domruf
|
r6980 | |||
Thomas De Schampheleire
|
r7410 | .. _upgrade_config: | ||
Søren Løvborg
|
r5917 | |||
5. Upgrade your configuration | ||||
----------------------------- | ||||
Mads Kiilerich
|
r6510 | Run the following command to create a new configuration (``.ini``) file:: | ||
Søren Løvborg
|
r5917 | |||
Thomas De Schampheleire
|
r7327 | kallithea-cli config-create new.ini | ||
Mads Kiilerich
|
r6510 | |||
Thomas De Schampheleire
|
r7414 | Then compare it with your old config file and copy over the required | ||
configuration values from the old to the new file. | ||||
Søren Løvborg
|
r5917 | |||
.. note:: | ||||
Please always make sure your ``.ini`` files are up to date. Errors | ||||
can often be caused by missing parameters added in new versions. | ||||
Søren Løvborg
|
r5986 | .. _upgrade_db: | ||
Søren Løvborg
|
r5917 | |||
6. Upgrade your database | ||||
------------------------ | ||||
Søren Løvborg
|
r5986 | .. note:: | ||
If you are *downgrading* Kallithea, you should perform the database | ||||
migration step *before* installing the older version. (That is, | ||||
always perform migrations using the most recent of the two versions | ||||
you're migrating between.) | ||||
First, run the following command to see your current database version:: | ||||
Thomas De Schampheleire
|
r7410 | alembic -c new.ini current | ||
Søren Løvborg
|
r5986 | |||
Typical output will be something like "9358dc3d6828 (head)", which is | ||||
the current Alembic database "revision ID". Write down the entire output | ||||
for troubleshooting purposes. | ||||
The output will be empty if you're upgrading from Kallithea 0.3.x or | ||||
older. That's expected. If you get an error that the config file was not | ||||
found or has no ``[alembic]`` section, see the next section. | ||||
Next, if you are performing an *upgrade*: Run the following command to | ||||
upgrade your database to the current Kallithea version:: | ||||
Thomas De Schampheleire
|
r7410 | alembic -c new.ini upgrade head | ||
Søren Løvborg
|
r5986 | |||
If you are performing a *downgrade*: Run the following command to | ||||
downgrade your database to the given version:: | ||||
Thomas De Schampheleire
|
r7410 | alembic -c new.ini downgrade 0.4 | ||
Søren Løvborg
|
r5986 | |||
Alembic will show the necessary migrations (if any) as it executes them. | ||||
If no "ERROR" is displayed, the command was successful. | ||||
Should an error occur, the database may be "stranded" half-way | ||||
through the migration, and you should restore it from backup. | ||||
Enabling old Kallithea config files for Alembic use | ||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||||
Kallithea configuration files created before the introduction of Alembic | ||||
(i.e. predating Kallithea 0.4) need to be updated for use with Alembic. | ||||
Without this, Alembic will fail with an error like this:: | ||||
FAILED: No config file 'my.ini' found, or file has no '[alembic]' section | ||||
Thomas De Schampheleire
|
r7410 | .. note:: | ||
If you followed this upgrade guide correctly, you will have created a | ||||
new configuration file in section :ref:`Upgrading your configuration | ||||
<upgrade_config>`. When calling Alembic, make | ||||
sure to use this new config file. In this case, you should not get any | ||||
errors and the below manual steps should not be needed. | ||||
Søren Løvborg
|
r5986 | If Alembic complains specifically about a missing ``alembic.ini``, it is | ||
likely because you did not specify a config file using the ``-c`` option. | ||||
On the other hand, if the mentioned config file actually exists, you | ||||
need to append the following lines to it:: | ||||
[alembic] | ||||
script_location = kallithea:alembic | ||||
Your config file should now work with Alembic. | ||||
Søren Løvborg
|
r5917 | |||
Thomas De Schampheleire
|
r7412 | 7. Prepare the front-end | ||
------------------------ | ||||
Starting with Kallithea 0.4, external front-end dependencies are no longer | ||||
shipped but need to be downloaded and/or generated at installation time. Run the | ||||
following command:: | ||||
kallithea-cli front-end-build | ||||
Thomas De Schampheleire
|
r7413 | 8. Rebuild the Whoosh full-text index | ||
------------------------------------- | ||||
It is recommended that you rebuild the Whoosh index after upgrading since | ||||
new Whoosh versions can introduce incompatible index changes. | ||||
9. Start the Kallithea web application | ||||
-------------------------------------- | ||||
This step once again depends entirely on the web server software used to | ||||
serve Kallithea. | ||||
Thomas De Schampheleire
|
r7414 | If you were running Kallithea 0.3.x or older and were using ``paster serve | ||
my.ini`` before, then the corresponding command in Kallithea 0.4 and later is:: | ||||
gearbox serve -c new.ini | ||||
Thomas De Schampheleire
|
r7413 | Before starting the new version of Kallithea, you may find it helpful to | ||
clear out your log file so that new errors are readily apparent. | ||||
.. note:: | ||||
If you're using Celery, make sure you restart all instances of it after | ||||
upgrade. | ||||
Mads Kiilerich
|
r8629 | 10. Reinstall internal Git repository hooks | ||
------------------------------------------- | ||||
Thomas De Schampheleire
|
r7300 | |||
It is possible that an upgrade involves changes to the Git hooks installed by | ||||
Kallithea. As these hooks are created inside the repositories on the server | ||||
filesystem, they are not updated automatically when upgrading Kallithea itself. | ||||
Mads Kiilerich
|
r8554 | To update the hooks of your Git repositories, run:: | ||
kallithea-cli repo-scan -c my.ini --install-git-hooks | ||||
Mads Kiilerich
|
r8630 | Watch out for warnings like ``skipping overwriting hook file X``, then fix it | ||
and rerun, or consider using ``--overwrite-git-hooks`` instead. | ||||
Mads Kiilerich
|
r8554 | Or: | ||
Thomas De Schampheleire
|
r7300 | |||
* Go to *Admin > Settings > Remap and Rescan* | ||||
* Select the checkbox *Install Git hooks* | ||||
* Click the button *Rescan repositories* | ||||
.. note:: | ||||
Kallithea does not use hooks on Mercurial repositories. This step is thus | ||||
not necessary if you only have Mercurial repositories. | ||||