XL Release - Upgrade Manual

    The upgrade process

    The upgrade process consists of the following steps:

    1. Obtain a new version of the XL Release software from XebiaLabs.
    2. Read the new version's release notes so you are aware of the new functionality and possible upgrade considerations.
    3. Read the new version's upgrade manual (this document) so you are aware of possible upgrade considerations.
    4. If the current version of XL Release is running, stop it and ensure that there are no running tasks active.
    5. Create a new installation directory for the new version of XL Release (so the existing version is still available in case of problems).
    6. Extract the new XL Release software release into the new installation directory.
    7. Copy the data from the previous XL Release installation directory into the new installation directory.
    8. Start the new version of XL Release.

    Upgrade notes

    • It is possible to skip XL Release versions when upgrading. XL Release will sequentially apply any upgrades for the intermediate (skipped) versions. Please read the specific upgrade instructions for each of the versions carefully.
    • If a repository upgrade is required, XL Release will detect that it is running against an old repository and will automatically execute an upgrade when it is first started. The server log will contain extensive logging of the repository upgrade process.

    Upgrading the server

    To upgrade an existing XL Release server installation:

    1. Create a directory for the new XL Release server installation, including the new XL Release server version number in the directory name.
    2. Extract the server archive in this directory.
    3. Copy the contents of the conf directory from the previous installation into the new installation directory.
    4. Copy the entire repository directory from the previous installation into the new installation directory.
    5. Do not copy the contents of the hotfix directory unless you are instructed to do so, because hotfixes are version-specific.
    6. Copy the contents of the plugins directory from the previous installation into the new installation directory.
    7. If you have made any changes to the XL Release server startup scripts (server.sh or server.cmd), manually re-do these changes in the new installation directory.

    This completes the upgrade of the XL Release server.

    Specific upgrade notes

    This section describes specific considerations for migrating from or to a particular XL Release version:

    Upgrading to XL Release 4.6.0

    Long running repository upgrade

    The XL Release repository has been optimized so that it stores less information and is more efficient. When you upgrade to XL Release 4.6.0, it will process all existing data in your repository, which can take a long time. Please take into account that this upgrade will take longer than usual, and be sure to backup your data.

    As an example, it takes 10-15 minutes to upgrade a repository containing 500 releases.

    Changes in restart phase feature

    Please note that starting from 4.6.0, when restarting phase, which contained parallel groups, all the tasks inside the group are restored to the state which existed at the moment when the group was started.

    Limitations of restart phase feature for releases that were active during the upgrade

    If some releases were active during the upgrade to 4.6.0, the restart phase feature will work with some limitations: values of the variables will not be evaluated after the restart and fields will keep their existing values.

    Please note, that only releases that were active at the moment of upgrade will be affected.

    Upgrading to XL Release 4.5.0

    SVN plugin is bundled

    The XL Release SVN plugin is now bundled with standard distribution. So if you added it before into your /plugins folder, please remove it and its dependent libraries. Otherwise you will get errors like this: duplicate definition for type [svn.Poll]. Here is a list of libraries you should remove from /plugins folder:

    plugins/antlr-runtime-3.4.jar
    plugins/jna-3.5.2.jar
    plugins/jsch.agentproxy.connector-factory-0.0.7.jar
    plugins/jsch.agentproxy.core-0.0.7.jar
    plugins/jsch.agentproxy.pageant-0.0.7.jar
    plugins/jsch.agentproxy.sshagent-0.0.7.jar
    plugins/jsch.agentproxy.svnkit-trilead-ssh2-0.0.7.jar
    plugins/jsch.agentproxy.usocket-jna-0.0.7.jar
    plugins/jsch.agentproxy.usocket-nc-0.0.7.jar
    plugins/platform-3.5.2.jar
    plugins/sequence-library-1.0.2.jar
    plugins/sqljet-1.1.10.jar
    plugins/svnkit-1.8.5.jar
    plugins/trilead-ssh2-1.0.0-build217.jar
    plugins/xlr-svn-plugin-4.0.X.jar
    

    Upgrading to XL Release 4.0.13

    LDAP security upgrade

    • If you are using LDAP authentication, you must update xl-release-security.xml:
      • Change org.springframework.security.ldap.authentication.LdapAuthenticationProvider to com.xebialabs.xlrelease.security.authentication.LdapAuthenticationProvider

    Upgrading to XL Release 4.0.11

    Security upgrade

    • Spring and Spring Security were upgraded to version 3.2, so if you use xl-release-security.xml, you must update it by removing the version specification of XSD files:
      • Change .../spring-beans-3.1.xsd to .../spring-beans.xsd
      • Change .../spring-security-3.1.xsd to .../spring-security.xsd

    Upgrading to XL Release 4.0.10

    Updating calls to XLRequest

    In order to benefit new features from HttpRequest/HttpResponse, the plugin scripts have to be updated :

    • In the existing script replace the CredentialsFallback, XLRequest() and send() calls:

      credentials = CredentialsFallback(jiraServer, username, password).getCredentials()
      response = XLRequest(jiraURL + '/contextUrl', 'POST', content, credentials['username'], credentials['password'], 'application/json').send()
      
    • By calls to the HttpRequest constructor and to the get(), post(), put(), delete() methods:

      request = HttpRequest(jiraServer, username, password)
      response = request.post('/rest/api/2/issue',
          content,
          contentType = 'application/json')
      
    • Replace calls to read():

      data = json.loads(response.read())
      
    • By an access to the response property:

      data = json.loads(response.response)