.. meta:: :description: Critical documentation for upgrading the Roundup Issue Tracker. Actions that must be taken when upgrading from one version to another are documented here. .. index:: Upgrading ====================================== Upgrading to newer versions of Roundup ====================================== Please read each section carefully and edit the files in your tracker home accordingly. Note that there is information about upgrade procedures in the `administration guide`_ in the `Software Upgrade`_ section. If a specific version transition isn't mentioned here (e.g. 0.6.7 to 0.6.8) then you don't need to do anything. If you're upgrading from 0.5.6 to 0.6.8 though, you'll need to apply the "0.5 to 0.6" and "0.6.x to 0.6.3" steps. General steps: 1. Make note of your current Roundup version. 2. Take your Roundup installation offline (web, email, cron scripts, roundup-admin etc.) 3. Backup your Roundup instance 4. Install the new version of Roundup (preferably in a new virtual environment) 5. Make version specific changes as described below for each version transition. If you are starting at 1.5.0 and installing to 2.3.0, you need to make the changes for **all** versions starting at 1.5 and ending at 2.3. E.G. 1.5.0 -> 1.5.1, 1.5.1 -> 1.6.0, ..., 2.1.0 -> 2.2.0, 2.2.0 -> 2.3.0. 6. Run ``roundup-admin -i migrate`` using the newer version of Roundup for the instance you are upgrading. This will update the database if it is required. 7. Bring your Roundup instance back online 8. Test Repeat for each tracker instance. .. note:: The v1.5.x releases of Roundup were the last to support Python v2.5 and v2.6. Starting with the v1.6 releases of Roundup Python version 2.7 that is newer than 2.7.2 is required to run Roundup. Starting with Roundup version 2.0.0 we also support Python 3 versions newer than 3.6. Recent release notes have the following labels: * **required** - Roundup will not work properly if these steps are not done * **recommended** - Roundup will still work, but these steps can cause security or stability issues if not done. * **optional** - new features or changes to existing features you might want to use * **info** - important possibly visible changes in how things operate If you use virtual environments for your installation, you can run trackers with different versions of Roundup. So you can have one tracker using version 2.2.0 and another tracker using version 1.6.1. This allows you to upgrade trackers one at a time rather than having to upgrade all your trackers at once. Note that downgrading may require restoring your database to an earlier version, so make sure you backed up your database. .. note:: This file only includes versions released in the last 10 years. If you are upgrading from an older version, start with the changes in the `historical migration `_ document. .. admonition:: Python 2 Support If you are running Roundup under Python 2, you should make plans to switch to Python 3. Release 2.4.0 (Jul 2024) is the last release to officially support Python 2. The next non-patch release scheduled for 2025 will mark 5 years since Roundup supported Python 3. .. admonition:: XHTML Support Deprecation Notice If you are running a tracker where the ``html_version`` setting in ``config.ini`` is ``xhtml``, you should plan to change your templates to use html (HTML5). If you are affected by this, please send email to the roundup-users mailing list (roundup-users at lists.sourceforge.net). Version 2.3.0 is the last version to support XHTML. Contents: .. contents:: :local: .. index:: Upgrading; 2.2.0 to 2.3.0 Migrating from 2.3.0 to 2.4.0 ============================= Update your ``config.ini`` (required) ------------------------------------- Upgrade tracker's config.ini file. Use:: roundup-admin -i /path/to/tracker updateconfig newconfig.ini to generate a new ini file preserving all your settings. You can then merge any local comments from the tracker's ``config.ini`` to ``newconfig.ini`` and replace ``config.ini`` with ``newconfig.ini``. ``updateconfig`` will tell you if it is changing old default values or if a value must be changed manually. This will insert the bad API login rate limiting settings. Also if you have ``html_version`` set to ``xhtml``, you will get an error. .. _CVE-2024-39124: Fix for CVE-2024-39124 in help/calendar popups (recommended) ------------------------------------------------------------ Classhelper components accessed via URL using ``@template=help``, ``@template=calendar`` or other template frame in the classhelper can run JavaScript embedded in the URL. If user clicks on a malicious URL that: * arrives in an email, * is embedded in a note left on a ticket [#markdown-note]_, * left on some other web page the JavaScript code will be executed. This vulnerability seems to be limited to manually crafted URL's. It has not been generated by using Roundup's mechanism for generating classhelper URLs. The files that need to be changed to fix this depend on the template used to create the tracker. Check the TEMPLATE-INFO.txt file in your tracker home. The template name is the first component of the ``Name`` field. For example trackers with Names like:: Name: classic-bugtracker Name: devel-mytracker were derived from the ``classic`` and ``devel`` templates respectively. If your tracker is derived from the jinja2 template, you may not be affected as it doesn't provide classhelpers by default. If you aren't sure which tracker template was used to create your tracker home, check the ``html/help.html`` file for the word ``Javascript``. If your help.html is missing the word ``Javascript``, follow the directions for the classic template. If you have not modified the original tracker html templates, you can copy replacement files from the new templates supplied with release 2.4.0. If you install 2.4.0 in a `new virtual environment `_, you can use the command ``roundup-admin templates`` to find the installation path of the default templates. If your template was based on the classic template, replace the following files in your tracker: * html/_generic.calendar.html * html/_generic.help-list.html * html/_generic.help-submit.html * html/_generic.help.html * html/user.help-search.html * html/user.help.html If your template was based on the minimal template, replace the following files in your tracker: * html/_generic.calendar.html * html/_generic.help.html If your template was based on the responsive or devel templates, replace the following files in your tracker: * html/_generic.calendar.html * html/_generic.help-submit.html * html/help.html * html/user.help-search.html * html/user.help.html As an example, assume Roundup's virtual environment is ``/tools/roundup``. The classic tracker's default template will be in ``/tools/roundup/share/roundup/templates/classic``. Copy ``/tools/roundup/share/roundup/templates/classic/html/_generic.calendar.html`` to ``html/_generic.calendar.html`` in your tracker's home directory. Repeat for every one of the files that needs to be replaced. If you have made local changes to your popup/classhelper files or have created new help templates based on the existing ones, don't copy the default files. Instead, follow the directions below to modify each file as needed for your template. In the examples below, your script tag may differ. For example it could include:: tal:attributes="nonce request/client/client_nonce" If it does, keep the differences. You want to make changes to remove the structure option but keep the rest of the valid attributes. Most files have a small script that sets a few variables from the settings in the URL. You should change::