Cloud customer?
Start for Free >
Upgrade in MyJFrog >
What's New in Cloud >





Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

The procedure to upgrade Artifactory depends on your installation type. We strongly recommend reading through this page before proceeding with your upgrade.

Tip
titleUpgrading to version 7.x for the first time?

It is recommended that you first review what's new with the latest JFrog Platform. Review the breaking changes, deprecated features and more.

Warning

Before you upgrade Artifactory, you need to shut down the Artifactory service. Artifactory will not be online during upgrade. Factor in this downtime before you proceed with the upgrade..

System Requirements

Before upgrading Artifactory, refer to System Requirements for information on supported platforms, supported browsers and other requirements. To learn about the HA architecture, refer to System Architecture.

Note: Make sure to use the same upgrade method (RPM, Debian, Docker, etc.) as the one you initially used to install Artifactory.

Warning
titleBefore You Proceed

To ensure you can restore your Artifactory and database in case you encounter any issues during the upgrade process, we strongly recommend that you make sure your system and database backups are up to date.

Oracle Database users

Artifactory 7.x requires a new setup to connect to an Oracle Database. For more information, see Configuring Artifactory to use Oracle

Warning
titleArtifactory with Xray

Do you have more than one Artifactory instances connected to your single Xray instance?

When upgrading to the JFrog Platform, Xray must be connected only to a single Artifactory instance. If you have one Xray instance connected to more than one Artifactory instances, use one of the following options before proceeding with any upgrade: 

Option 1 (recommended): Keep one connected Artifactory instance to your single Xray instance, and upgrade the rest to version 7.x with newly installed Xray version 3.x instances. This option will require re-indexing the the additional Artifactory instances, and will cause some loss of configuration data. Learn More >

Option 2: Install additional Xray version 2.x instances for each Artifactory instance that you have, and restore all MongoDB and PostgreSQL data. Continue to upgrade each Artifactory and Xray pairs to version 7.x and version 3.x. This procedure is only suggested if you must keep all your Xray configurations and easily reconfigure them in the new instances. Learn More >

Prior to upgrading Xray

The upgrade process might take a while to complete, you should consider enabling the Allow downloads when Xray is unavailable, and the Allow downloads of blocked artifacts checkboxes in the Xray Configuration page to prevent Artifactory from not being able to respond to user requests.

Installation Types

The install type is referenced as <type> in the different installation instructions below.

Subscription TypeInstall TypeDownload the Package
Pro
Pro X
Enterprise
Enterprise+
proDownload Link
Artifactory OSS
ossDownload Link
Artifactory CE
cpp-ceDownload Link
JFrog Container Registry
jcrDownload Link

Upgrade Steps

The upgrade procedure involves the following main steps:

  1. Download the package to upgrade (Linux Archive, RPM, Debian, Docker Compose, Helm).
  2. Stop the current server
  3. Extract/Install the package according to the installer distribution type.
  4. Check the Migration Log and review system.yaml to validate the migration was successful (only for upgrading from v6.x).
  5. Start the service using the start scripts or OS service management.
  6. Check the Artifactory Log for the status of the service.
Info
title Default Home Directory / $JFROG_HOME

The default Artifactory home directory is defined according to the installation type. For additional details see the JFrog Product Directory Structure.

Note: This guide uses $JFROG_HOME to represent the JFrog root directory containing the deployed product, the home directory for all JFrog products.

Panel

JFrog Subscription Levels

SELF-HOSTED
PRO
PRO X
ENTERPRISE 
ENTERPRISE+
Panel
titlePage Contents

Table of Contents
maxLevel3
minLevel2


Upgrading from Version Below 6.10

To upgrade from a version below 6.10.x, you first need to upgrade to version 6.10.x (or any 6.x version above 6.10.x) as described in the Upgrading Artifactory 6.x documentation, and then continue to upgrading from version 6.10 to 7.x.

Warning

Before you upgrade, ensure that the operating system version that you use is supported. See System Requirements for detailed information on operating system support.



Upgrading from Version 6.10.x Onwards to 7.x

The following table provides the version in 7.x you can upgrade from particular versions of 6.x.

Upgrade from 6.x VersionUpgrade to 7.x Version
Artifactory version 6.23.21 and aboveArtifactory version 7.21.3 and above
Artifactory version 6.23.15 and aboveArtifactory version 7.17.5 and above
Artifactory version 6.23.13 and aboveArtifactory version 7.16.0 and above
Artifactory version 6.23.7 and aboveArtifactory version 7.12.6 and above
Artifactory version 6.23.3 and aboveArtifactory version 7.11.x and above
Artifactory version 6.23.1 and aboveArtifactory version 7.10.x and above
Artifactory version 6.23.0 and aboveArtifactory version 7.10.x and above
Artifactory version 6.22.x and aboveArtifactory version 7.9.x and above
Artifactory version 6.21.x and aboveArtifactory version 7.7.x and above
Artifactory version 6.20.x and aboveArtifactory version 7.5.x and above
Artifactory version 6.19.x and aboveArtifactory version 7.4.2 and above
Artifactory version 6.18.x and above

Artifactory version 7.3.2 and above

Artifactory version 6.10.x to 6.17xAny version of Artifactory 7.x

Apart from the exceptions listed above, you can upgrade to any version of 7.x from any version from 6.10.x and above.

Warning

If you use S3 as the filestore, before you  upgrade from 6.23.28 and higher (6.23.28, 6.23.31, 6.23.33, 6.23.36, 6.23.37, 6.23.38) to version 7.x, provide the S3 credentials in a non-encrypted, plaintext format. Artifactory will no longer be able to decrypt the encrypted credentials due to change in the encryption algorithm in version 7.x. and fails to start after upgrade. The credentials are automatically encrypted after the upgrade.

There are several new concepts introduced in Artifactory 7.x, improving the installation and customization process. For example, a system.yaml file holds the configurations and customizations that you make to the Artifactory installation. Artifactory preserves your configuration during an upgrade.

Note

Artifactory 6.x has access-admin and arti-admin users for Access and Artifactory respectively. In Artifactory 7.x, a global admin user handles administration across services. The access-admin and arti-admin users are still kept during the upgrade process. You can safely delete these users after the upgrade.

The following upgrade methods are supported:

Linux Archive Upgrade

Migration is a manual process for a Linux archive installation. The below steps also include copying directories over and running the migration script

Note

Make sure to run all commands on the server with the user that's running Artifactory.

  1. Stop the current server.

    Code Block
    languagebash
    cd $ARTIFACTORY_HOME/bin
    ./artifactoryctl stop
  2. Extract the contents of the compressed archive and move it into artifactory directory.

    Code Block
    languagebash
    tar -xvf jfrog-artifactory-<pro|oss|cpp-ce>-<version>-linux.tar.gz
    mkdir jfrog
    mv artifactory-<pro|oss|cpp-ce>-<version> jfrog/artifactory
  3. Set your ARTIFACTORY_HOME and JFROG_HOME variables. 
    Note: the $ARTIFACTORY_HOME variable points to your existing installation, and the $JFROG_HOME variable points to the new installation.

    Code Block
    languagebash
    export ARTIFACTORY_HOME=<Path to your current Artifactory installation> 
    export JFROG_HOME=<Full path to jfrog directory, for example: /opt/jfrog>
    export JF_PRODUCT_HOME=$JFROG_HOME/artifactory
  4. Copy the directories from your current to the new path.

    Note

    Below are the directories you need to copy from your current path to the new path. 
    The examples below of copying the data from your version 6 installation to your version 7 are provided in BASH.


    Mandatory Steps

    Code Block
    languagebash
    # Artifactory data
    mkdir -p $JFROG_HOME/artifactory/var/data/artifactory/
    cp -rp $ARTIFACTORY_HOME/data/. $JFROG_HOME/artifactory/var/data/artifactory/
    
    # Access data
    mkdir -p $JFROG_HOME/artifactory/var/data/access/
    cp -rp $ARTIFACTORY_HOME/access/data/. $JFROG_HOME/artifactory/var/data/access/
    
    # Replicator data
    # Note: If you've have never used the Artifactory Replicator 
    # your $ARTIFACTORY_HOME/replicator/ directory will be empty
    mkdir -p $JFROG_HOME/artifactory/var/data/replicator/
    cp -rp $ARTIFACTORY_HOME/replicator/data/. $JFROG_HOME/artifactory/var/data/replicator/
    
    # Artifactory config
    mkdir -p $JFROG_HOME/artifactory/var/etc/artifactory/
    cp -rp $ARTIFACTORY_HOME/etc/. $JFROG_HOME/artifactory/var/etc/artifactory/
    
    # Access config
    mkdir -p $JFROG_HOME/artifactory/var/etc/access/
    cp -rp $ARTIFACTORY_HOME/access/etc/. $JFROG_HOME/artifactory/var/etc/access/
    
    # Replicator config
    # Note: If you have never used the Artifactory Replicator 
    # your $ARTIFACTORY_HOME/replicator/ directory will be empty
    mkdir -p $JFROG_HOME/artifactory/var/etc/replicator/
    cp -rp $ARTIFACTORY_HOME/replicator/etc/. $JFROG_HOME/artifactory/var/etc/replicator/
    
    # master.key
    mkdir -p $JFROG_HOME/artifactory/var/etc/security/
    cp -p $ARTIFACTORY_HOME/etc/security/master.key $JFROG_HOME/artifactory/var/etc/security/master.key
    
    # server.xml
    mkdir -p $JFROG_HOME/artifactory/var/work/old
    cp -p $ARTIFACTORY_HOME/tomcat/conf/server.xml $JFROG_HOME/artifactory/var/work/old/server.xml
    
    # artifactory.defaults
    cp -rp $ARTIFACTORY_HOME/bin/artifactory.default $JFROG_HOME/artifactory/var/work/old/artifactory.default
    #or, if Artifactory was installed a service
    cp -rp $ARTIFACTORY_HOME/etc/default $JFROG_HOME/artifactory/var/work/old/artifactory.default
    
    # External database driver, for example: mysql-connector-java-<version>.jar
    mkdir -p $JFROG_HOME/artifactory/var/bootstrap/artifactory/tomcat/lib
    cp -rp $ARTIFACTORY_HOME/tomcat/lib/<your database driver> $JFROG_HOME/artifactory/var/bootstrap/artifactory/tomcat/lib/<your database driver>
    
    # Remove logback.xml with old links. Please consider migrating manually anything that is customized here
    rm -f $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml
    rm -f $JFROG_HOME/artifactory/var/etc/access/logback.xml
    
    # Move Artifactory logs
    mkdir -p $JFROG_HOME/artifactory/var/log/archived/artifactory/
    cp -rp $ARTIFACTORY_HOME/logs/. $JFROG_HOME/artifactory/var/log/archived/artifactory/
    
    # Move configuration files
    # Note: Run the following only when upgrading from Artifactory version 6.x to version 7.5.x and above.
    mkdir -p $JFROG_HOME/artifactory/var/etc/artifactory/old
    mkdir -p $JFROG_HOME/artifactory/var/etc/access/old
    mkdir -p $JFROG_HOME/artifactory/var/etc/replicator/old
    cp $JFROG_HOME/artifactory/var/etc/artifactory/db.properties  $JFROG_HOME/artifactory/var/etc/artifactory/old/db.properties
    cp $JFROG_HOME/artifactory/var/etc/artifactory/ha-node.properties  $JFROG_HOME/artifactory/var/etc/artifactory/old/ha-node.properties
    cp $JFROG_HOME/artifactory/var/etc/access/db.properties   $JFROG_HOME/artifactory/var/etc/access/old/db.properties
    cp $JFROG_HOME/artifactory/var/etc/replicator/replicator.yaml  $JFROG_HOME/artifactory/var/etc/replicator/old/replicator.yaml

    HA Steps
    Replace any relative paths in the $ARTIFACTORY_HOME/etc/ha-node.properties file with absolute paths.

    Code Block
    languagebash
    titleFor example:
    # relative path
    artifactory.ha.data.dir=artifactory-ha
    # absolute path
    artifactory.ha.data.dir=/var/opt/jfrog/artifactory-ha

    Optional Steps

    Code Block
    languagebash
    # Artifactory backup (optional)
    mkdir -p $JFROG_HOME/artifactory/var/backup/artifactory/
    cp -rp $ARTIFACTORY_HOME/backup/. $JFROG_HOME/artifactory/var/backup/artifactory/
    
    # Access backup (optional)
    mkdir -p $JFROG_HOME/artifactory/var/backup/access/
    cp -rp $ARTIFACTORY_HOME/access/data/. $JFROG_HOME/artifactory/var/backup/access/
    
    # Replicator backup (optional)
    mkdir -p $JFROG_HOME/artifactory/var/backup/replicator/
    cp -rp $ARTIFACTORY_HOME/replicator/data/. $JFROG_HOME/artifactory/var/backup/replicator/
    
    # Access logs (optional)
    mkdir -p $JFROG_HOME/artifactory/var/log/archived/access/
    cp -rp $ARTIFACTORY_HOME/access/logs/. $JFROG_HOME/artifactory/var/log/archived/access/
    
    # Replicator logs (optional)
    mkdir -p $JFROG_HOME/artifactory/var/log/archived/replicator/
    cp -rp $ARTIFACTORY_HOME/replicator/logs/. $JFROG_HOME/artifactory/var/log/archived/replicator/
  5. Run the migration script with the same privileges as you have in your current Artifactory installation. This script will copy over and translate your current configurations to the new configuration format, according to the new file system layout.

    Note

    The migration script only migrates configuration values. Any comments added to the configuration files in the Artifactory 6.x installation will not be migrated.

    Code Block
    languagebash
    cd $JFROG_HOME/artifactory/app/bin
    ./migrate.sh
    Note

    When upgrading Artifactory using Linux Archive, you will need to verify that the copied directories and the copied content have the right owners.

    If you are using the default user:group, the owner will automatically be assigned artifactory:artifactory, and you will not need to take any further actions (the upgrade will use these by default).

    If, however, you are using a custom user:group, you will then need to go the Artifactory system.yaml file and update it with the custom user:group. You will then need to make sure that the directory has the same user and group.

  6. Check that the migration has completed successfully, by reviewing the following files:
     - migration log$JFROG_HOME/artifactory/var/log/migration.log
    - system.yaml configuration$JFROG_HOME/artifactory/var/etc/system.yaml
       This newly created file will contain your current custom configurations in the new format.
  7. If Artifactory was installed as a service in previous version, install this version also as a service.

    Note

    When an earlier version is installed as a service, it is important to update the new one also as a service. Otherwise a restart of the server may lead to older version of Artifactory coming up.

    Code Block
    languagebash
    cd $JFROG_HOME/artifactory/app/bin
    ./installService.sh
  8. Manage Artifactory.

    Code Block
    languagebash
    $JFROG_HOME/artifactory/app/bin/artifactoryctl start|stop|check
  9. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

    Note

    If you had a reverse proxy or load balancer configured with your Artifactory 6.x, you will need to create a new reverse proxy configuration and update your reverse proxy settings.

    You can generate a new configuration template by accessing the upgraded Artifactory server UI (by default http://localhost:8082/ui/), navigate to 
    Administration > Artifactory > General > HTTP Settings adjust your Reverse Proxy Settings and generate a new configuration template. See Reverse Proxy Settings.


  10. Check Artifactory Log.

    Code Block
    tail -f $JFROG_HOME/artifactory/var/log/console.log

Docker Upgrade
Anchor
dockerupgr6
dockerupgr6

Info

The Docker upgrade only applies when upgrading from Artifactory 6.x to Artifactory 7.4.1 and above.

  1. Stop and remove Artifactory using native Docker commands.

    Code Block
    languagebash
    titlefor example
    docker stop artifactory
    docker rm -f artifactory
  2. Set the path to your current Artifactory home, and make sure the directory permissions are set correctly.

    Code Block
    languagebash
    export ARTIFACTORY_HOME=<Mount Path to your current Artifactory data directory>
    chown -R 1030:1030 $ARTIFACTORY_HOME
  3. Start the Artifactory container

    Code Block
    languagebash
    docker run -e ENABLE_MIGRATION=y --name artifactory -v   $ARTIFACTORY_HOME:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-<pro|oss|cpp-ce>:latest
  4. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/.
  5. Check Artifactory Log.

    Code Block
    docker logs -f artifactory

Docker Compose Upgrade 

Anchor
dockercomposeupgrade
dockercomposeupgrade

  1. Stop and remove the current containers.

    Code Block
    languagebash
    titleUpgrading from docker run
    docker stop artifactory
    docker rm -f artifactory 
    Code Block
    languagebash
    titleUpgrading from docker compose available at https://bintray.com/jfrog/run/art-compose
    docker stop artifactory postgresql  nginx
    docker rm -f artifactory postgresql  nginx
  2. Extract the contents of the compressed archive and go to the extracted folder.

    Code Block
    languagebash
    tar -xvf jfrog-artifactory-<pro|oss|cpp-ce>-<version>-compose.tar.gz
    Note
    title.env file included within the Docker-Compose archive

    This .env file is used by docker-compose and is updated during installations and upgrades.

    Notice that some operating systems do not display dot files by default. If you make any changes to the file, remember to backup before an upgrade.

  3. Run the config.sh script to setup folders with required ownership.

    Code Block
    ./config.sh
  4. Check that the migration has completed successfully, by reviewing the following files:

    1. migration log$JFROG_HOME/artifactory/var/log/migration.log

    2. system.yaml configuration$JFROG_HOME/artifactory/var/etc/system.yamlThis newly created file will contain your current custom configurations in the new format.

    3. Depending on your choices, a selected docker-compose.yaml will be available in the extracted folder. However, there are a few docker-compose templates in the directory templates.You can choose any template and copy it to the extracted folder as docker-compose.yaml

  5. Manage Artifactory using native Docker Compose commands: docker-compose -p rt <action> command.

    Code Block
    languagebash
    # Starting from 7.8.x, PostgreSQL needs to be started before starting the other services.
    docker-compose -p rt-postgres -f docker-compose-postgres-9-6-11v.yaml up -d
    docker-compose -p rt up -d
    docker-compose -p rt ps
    docker-compose -p rt down
  6. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

    Note

    If you had a reverse proxy or load balancer configured with your Artifactory 6.x, you will need to create a new reverse proxy configuration and update your reverse proxy settings.
    You can generate a new configuration template by accessing the upgraded Artifactory server UI (by default http://localhost:8082/ui/), navigate to 
    Administration > Artifactory > General > HTTP Settings adjust your Reverse Proxy Settings and generate a new configuration template. See Reverse Proxy Settings.

  7. Check Artifactory Log.

    Code Block
    tail -f $JFROG_HOME/artifactory/var/log/console.log

Docker Compose Upgrade Using Docker Volumes
Anchor
volume_upgrade
volume_upgrade

  1. Stop and remove the current Docker containers.

    Code Block
    docker stop artifactory postgresql
    docker rm -f artifactory postgresql
  2. Extract the contents of the compressed archive and go to the extracted folder.

    Code Block
    tar -xvf jfrog-artifactory-<pro|oss|cpp-ce>-<version>-compose.tar.gz
  3. Copy the docker-compose-volumes.yaml file to the extracted folder.

    Code Block
    cp templates/docker-compose-volumes.yaml docker-compose.yaml
  4. Add the entry to the .env file.
    Note: Avoid duplicating the entry in the .env file.

    Code Block
    echo -e "JF_SHARED_NODE_IP=$(hostname -i)" >> .env
    echo -e "JF_SHARED_NODE_ID=$(hostname -s)" >> .env
    echo -e "JF_SHARED_NODE_NAME=$(hostname -s)" >> .env
  5. Remove the following env from the docker-compose.yaml file.
    Note: Migration starts from within the container and a new system.yaml aligning to the migrated data from Artifactory 6.x is created. To leverage this process, remove the env here to ensure that the old connection details are taken from system.yaml because the ENV supercedes the system.yaml entries. You can also choose to update these environment values to the old connection details for the upgrade to be successful.

    Code Block
    - JF_SHARED_DATABASE_TYPE=postgresql
    - JF_SHARED_DATABASE_USERNAME=artifactory
    - JF_SHARED_DATABASE_PASSWORD=password
    - JF_SHARED_DATABASE_URL=jdbc:postgresql://postgresql:5432/artifactory 
    - JF_SHARED_DATABASE_DRIVER=org.postgresql.Driver
  6. Manage Artifactory using the native Docker Compose command: docker-compose -p rt <action> command.
    Note: Run this command from the extracted folder.

    Code Block
    titleExamples
    docker-compose -p rt up -d
    docker-compose -p rt ps
    docker-compose -p rt down

RPM Upgrade

  1. Stop the current server.

    Code Block
    languagebash
    service artifactory stop
  2. Install Artifactory as a service on Red Hat compatible Linux distributions, as a root user.

    Code Block
    languagebash
    yum -y install jfrog-artifactory-<pro|oss|cpp-ce>-<version>
  3. Check that the migration has completed successfully, by reviewing the following files:

    1. migration log$JFROG_HOME/artifactory/var/log/migration.log

    2. system.yaml configuration$JFROG_HOME/artifactory/var/etc/system.yaml
      This newly created file will contain your current custom configurations in the new format.

  4. Manage Artifactory.

    Code Block
    languagebash
    service artifactory start|stop
  5. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

    Note

    If you had a reverse proxy or load balancer configured with your Artifactory 6.x, you will need to create a new reverse proxy configuration and update your reverse proxy settings.
    You can generate a new configuration template by accessing the upgraded Artifactory server UI (by default http://localhost:8082/ui/), navigate to 
    Administration > Artifactory > General > HTTP Settings adjust your Reverse Proxy Settings and generate a new configuration template. See Reverse Proxy Settings.

  6. Check Artifactory Log.

    Code Block
    tail -f $JFROG_HOME/artifactory/var/log/console.log

Debian Upgrade

  1. Stop the current server.

    Code Block
    languagebash
    service artifactory stop
  2. Install Artifactory as a service on a Debian compatible Linux distributions, as a root user.

    Code Block
    languagebash
    titleRun Installation
    dpkg -i jfrog-artifactory-<pro|oss|cpp-ce>-<version>.deb
  3. Check that the migration has completed successfully, by reviewing the following files:

    1. migration log$JFROG_HOME/artifactory/var/log/migration.log

    2. system.yaml configuration$JFROG_HOME/artifactory/var/etc/system.yaml
      This newly created file will contain your current custom configurations in the new format.

  4. Manage Artifactory.

    Code Block
    languagebash
    service artifactory start|stop
  5. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

    Note

    If you had a reverse proxy or load balancer configured with your Artifactory 6.x, you will need to create a new reverse proxy configuration and update your reverse proxy settings.
    You can generate a new configuration template by accessing the upgraded Artifactory server UI (by default http://localhost:8082/ui/), navigate to 
    Administration > Artifactory > General > HTTP Settings adjust your Reverse Proxy Settings and generate a new configuration template. See Reverse Proxy Settings.

  6. Check Artifactory Log.

    Code Block
    languagebash
    tail -f $JFROG_HOME/artifactory/var/log/console.log

Helm Upgrade

Note
titleArtifactory Upgrade from 6.x to 7.x (App Version)

Upgrading from 6.x to 7.x requires a one time migration process. This is done automatically on pod startup if needed. It is possible to configure the migration timeout with the following configuration in extreme cases. The default provided should be more than enough for completion of the migration:

Code Block
languagebash
artifactory:
  # Migration support from 6.x to 7.x
  migration:
    enabled: true
    timeoutSeconds: 3600
Note
titleMigrating the MasterKey from Version 6.x to 7.x (App Version)

Version 6.x only supports a masterKey with 16 hex (32 characters) and if you have set a masterKey using openssl rand -hex 32 (64 characters) in 6.x, only the first 32 characters are used and rest are ignored. When migrating from 6.x to 7.x, we trim the first 32 characters and set the masterkey, which implies that 7.x still uses the trimmed masterkey of 6.x. Therefore, the artifactory.masterKey should not be passed during migration from 6.x to 7.x.

Note
titleUpgrading from 8.x to 11.x and Above Chart Versions

If you are upgrading from 8.x to 11.x and above chart versions, remember to delete the existing PostgreSQL statefulset before upgrading the chart due to breaking changes in PostgreSQL subchart.

kubectl delete statefulsets <OLD_RELEASE_NAME>-postgresql


Once you have a new chart version, you can upgrade your deployment.

Upgrading Single Node

  1. Use the following command to upgrade.

    Code Block
    languagebash
    titleSingle node
    helm upgrade artifactory --namespace artifactory jfrog/artifactory 
  2. If Artifactory was installed without providing a value to postgresql.postgresqlPassword (i.e., if the password was auto-generated), follow these instructions to get the current password.

    Code Block
    languagebash
    POSTGRES_PASSWORD=$(kubectl get secret -n <namespace> <myrelease>-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  3. Upgrade the release by passing the previously auto-generated secret.

    Code Block
    languagebash
    helm upgrade <myrelease> jfrog/artifactory --set postgresql.postgresqlPassword=${POSTGRES_PASSWORD} --namespace <namespace>

    This will apply any configuration changes on your existing deployment.

HA Upgrade

  1. Use the following command to upgrade.

    Code Block
    languagebash
    titleHA
    helm upgrade artifactory-ha --namespace artifactory-ha jfrog/artifactory-ha
  2. If Artifactory was installed without providing a value to postgresql.postgresqlPassword (i.e., if the password was auto-generated), follow these instructions to get the current password.

    Code Block
    languagebash
    POSTGRES_PASSWORD=$(kubectl get secret -n <namespace> <myrelease>-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  3. Upgrade the release by passing the previously auto-generated secret.

    Code Block
    languagebash
    helm upgrade <myrelease> --namespace artifactory-ha jfrog/artifactory-ha --set postgresql.postgresqlPassword=${POSTGRES_PASSWORD}

    This will apply any configuration changes on your existing deployment.

Windows Upgrade

Migration is a manual process for a Windows installation. The below steps also include copying directories over and running the migration script

Note

Make sure to run all commands on the server with the user that's running Artifactory.

  1. Stop the current server.

    Code Block
    languagebash
    cd %ARTIFACTORY_HOME%\bin
    artifactory.bat stop
    Note

    If you are running the Artifactory service as a process, stop the service from Services. Press the Windows key +R and enter services.msc to access Services.

  2. Extract the contents of the compressed archive, move it into a newly created jfrog\artifactory folder, and go to the new folder.

    Code Block
    # Uncompress the zip file from windows interface
    mkdir jfrog
    move jfrog-artifactory-<pro|oss|cpp-ce>-<version> jfrog\artifactory
  3. Set your ARTIFACTORY_HOME and JFROG_HOME variables. 
    Note: The $ARTIFACTORY_HOME variable points to your existing installation, and the $JFROG_HOME variable points to the new installation.

    Info

    When setting the ARTIFACTORY_HOME and JFROG_HOME variables, make sure to use Windows short name or escape space. For more information, see here.

    Code Block
    languagebash
    SET ARTIFACTORY_HOME=<Path to your current Artifactory installation> 
    SET JFROG_HOME=<Path to jfrog folder>
    SET JF_PRODUCT_HOME=%JFROG_HOME%/artifactory
  4. Copy the directories from your current to the new path. Ignore if the target directory exists.

    Mandatory Steps

    Code Block
    languagepowershell
    # Artifactory data 
    
    mkdir %JFROG_HOME%\artifactory\var\data\artifactory
    xcopy %ARTIFACTORY_HOME%\data %JFROG_HOME%\artifactory\var\data\artifactory /E /q
     
    # Access data
    mkdir %JFROG_HOME%\artifactory\var\data\access
    xcopy %ARTIFACTORY_HOME%\access\data %JFROG_HOME%\artifactory\var\data\access /E /q
     
    # Replicator data
    # Note: If you've have never used the Artifactory Replicator
    # your %ARTIFACTORY_HOME%\replicator directory will be empty
    mkdir %JFROG_HOME%\artifactory\var\data\replicator
    xcopy %ARTIFACTORY_HOME%\replicator\data %JFROG_HOME%\artifactory\var\data\replicator /E /q
     
    # Artifactory config
    mkdir %JFROG_HOME%\artifactory\var\etc\artifactory
    xcopy %ARTIFACTORY_HOME%\etc %JFROG_HOME%\artifactory\var\etc\artifactory /E /q
     
    # Access config
    mkdir %JFROG_HOME%\artifactory\var\etc\access
    xcopy %ARTIFACTORY_HOME%\access\etc %JFROG_HOME%\artifactory\var\etc\access /E /q
     
    # Replicator config
    # Note: If you've have never used the Artifactory Replicator
    # your %ARTIFACTORY_HOME%\replicator directory will be empty
    mkdir %JFROG_HOME%\artifactory\var\etc\replicator
    xcopy %ARTIFACTORY_HOME%\replicator\etc %JFROG_HOME%\artifactory\var\etc\replicator /E /q
    
    # master.key
    mkdir %JFROG_HOME%\artifactory\var\etc\security
    xcopy %ARTIFACTORY_HOME%\etc\security\master.key %JFROG_HOME%\artifactory\var\etc\security /q
     
    # server.xml
    mkdir %JFROG_HOME%\artifactory\var\work\old
    xcopy %ARTIFACTORY_HOME%\tomcat\conf\server.xml %JFROG_HOME%\artifactory\var\work\old /q
     
    # External database driver, for example: mysql-connector-java-<version>.jar
    xcopy %ARTIFACTORY_HOME%\tomcat\lib\<your database driver> %JFROG_HOME%\artifactory\app\artifactory\tomcat\lib /q
    
    # Change ownership of new Artifactory directory to the user intended to run Artifactory.
    # This can be skipped if you performed all previous steps with the user intended to run Artifactory.
    
    # Remove logback.xml with old links. Please consider migrating manually anything that is customized here
    del %JFROG_HOME%\artifactory\var\etc\artifactory\logback.xml
    del %JFROG_HOME%\artifactory\var\etc\access\logback.xml
    
    # Move configuration files
    # Note: Run the following only when upgrading from Artifactory version 6.x to version 7.5.x and above.
    mkdir %JFROG_HOME%\artifactory\var\etc\artifactory\old
    mkdir %JFROG_HOME%\artifactory\var\etc\access\old
    mkdir %JFROG_HOME%\artifactory\var\etc\replicator\old
    
    move /Y %JFROG_HOME%\artifactory\var\etc\artifactory\db.properties %JFROG_HOME%\artifactory\var\etc\artifactory\old\db.properties
    move /Y %JFROG_HOME%\artifactory\var\etc\artifactory\ha-node.properties %JFROG_HOME%\artifactory\var\etc\artifactory\old\ha-node.properties
    move /Y %JFROG_HOME%\artifactory\var\etc\access\db.properties  %JFROG_HOME%\artifactory\var\etc\access\old\db.properties
    move /Y %JFROG_HOME%\artifactory\var\etc\replicator\replicator.yaml %JFROG_HOME%\artifactory\var\etc\replicator\old\replicator.yaml


    Optional Steps

    Code Block
    languagepowershell
    # Artifactory backup (optional)
    
    mkdir %JFROG_HOME%\artifactory\var\backup\artifactory
    xcopy %ARTIFACTORY_HOME%\backup %JFROG_HOME%\artifactory\var\backup\artifactory /E /q
     
    # Access backup (optional)
    mkdir %JFROG_HOME%\artifactory\var\backup\access
    xcopy %ARTIFACTORY_HOME%\access\backup %JFROG_HOME%\artifactory\var\backup\access /E /q
     
    # Replicator backup (optional)
    mkdir %JFROG_HOME%\artifactory\var\backup\replicator
    xcopy %ARTIFACTORY_HOME%\replicator\backup %JFROG_HOME%\artifactory\var\backup\replicator /E /q
     
    # Artifactory logs (optional)
    mkdir %JFROG_HOME%\artifactory\var\log\artifactory
    xcopy %ARTIFACTORY_HOME%\logs %JFROG_HOME%\artifactory\var\log\artifactory /E /q
     
    # Access logs (optional)
    mkdir %JFROG_HOME%\artifactory\var\log\access
    xcopy %ARTIFACTORY_HOME%\access\logs %JFROG_HOME%\artifactory\var\log\access /E /q
     
    # Replicator logs (optional)
    mkdir %JFROG_HOME%\artifactory\var\log\replicator
    xcopy %ARTIFACTORY_HOME%\replicator\logs %JFROG_HOME%\artifactory\var\log\replicator /E /q
    
    # Copy specific files from your current to the new path.
  5. For HA installations, replace any relative paths in the %ARTIFACTORY_HOME%\etc\ha-node.properties file with absolute paths.

    Code Block
    languagebash
    titleFor example:
    # relative path
    artifactory.ha.data.dir=artifactory-ha
    # absolute path
    artifactory.ha.data.dir=\var\opt\jfrog\artifactory-ha
  6. Run the migration script with the same privileges as you have in your current Artifactory installation. This script will copy over and translate your current configurations to the new configuration format, according to the new file system layout.

    Code Block
    languagebash
    cd %JFROG_HOME%\artifactory\app\bin
    migrate.bat
    Note

    The migration script only migrates configuration values. Any comments added to the configuration files in the Artifactory 6.x installation will not be migrated.

  7. Check that the migration has completed successfully, by reviewing the following files:
    1. migration log: %JFROG_HOME%\artifactory\var\log\migration.log

    2. system.yaml configuration: %JFROG_HOME%\artifactory\var\etc\system.yaml
      This newly created file will contain your current custom configurations in the new format.

    3. Manage Artifactory.

      Code Block
      languagebash
      %JFROG_HOME%\artifactory\app\bin\artifactory.bat start|stop
      Info
      titleFirewall Alerts for first time Artifactory Windows Installation
      When starting Artifactory, you may get some firewall exception messages. Select private networks and allow access to continue working.
      Note

      To install Artifactory as a Windows service, follow the steps here.

  8. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

    Note

    If you had a reverse proxy or load balancer configured with your Artifactory 6.x, you will need to create a new reverse proxy configuration and update your reverse proxy settings.
    You can generate a new configuration template by accessing the upgraded Artifactory server UI (by default http://localhost:8082/ui/), navigate to 
    Administration > Artifactory > General > HTTP Settings adjust your Reverse Proxy Settings and generate a new configuration template. See Reverse Proxy Settings.


  9. Check the artifactory-service.log.

    Code Block
    type %JFROG_HOME%\artifactory\var\log\artifactory-service.log

Upgrading from Version 7.x to 7.x

Warning

Before you upgrade, ensure that the operating system version that you use is supported. See System Requirements for detailed information on operating system support.

Info
titleUpgrading from JFrog Artifactory 7.x to 7.10 or above

When upgrading from any version prior to 7.10, to any version from 7.10 and above, the upgrade process executes an internal DB schema migration which may result in a short downtime.

Info

When upgrading from Artifactory 7.x to 7.x, your metadata will also be migrated automatically. For more information, see Metadata Migration in the JFrog Platform.

Info
titleViewing New Metrics and Trends

When upgrading to Artifactory 7.11.x, you need Mission Control 4.6.x to be able to use the new metrics and trends. 

The following upgrade methods are supported:

Linux Archive Upgrade

  1. Log in as a root user.

  2. Stop the current server.

    Code Block
    languagebash
    titleStop Artifactory
    cd $JFROG_HOME/artifactory/app/bin
    ./artifactoryctl stop
  3. Export JFrog variables.

    Code Block
    languagebash
    # Export variables to simplify commands
    export JFROG_HOME=<Your JFrog home directory, for example /opt/jfrog>
    export JF_NEW_VERSION=<For example /opt/jfrog/artifactory-7.x>



  4. Extract the contents of the compressed archive and go to the extracted folder.

    Code Block
    languagebash
    titleUntar
    tar -xvf jfrog-artifactory-<pro|oss|cpp-ce>-<version>-linux.tar.gz
  5. Replace the existing $JFROG_HOME/artifactory/app with the new app folder.

    Code Block
    languagebash
    titleUpgrade
    # Remove app
    rm -rf $JFROG_HOME/artifactory/app
    
    # Copy new app
    cp -r $JF_NEW_VERSION/app $JFROG_HOME/artifactory
    
    # Remove extracted new version
    rm -rf $JF_NEW_VERSION
    
    chown -R artifactory:artifactory /opt/jfrog/artifactory/app 
  6. If Artifactory was installed as a service in previous version, install this version also as a service.

    Note

    When an earlier version is installed as a service, it is important to update the new one also as a service. Otherwise a restart of the server may lead to older version of Artifactory coming up.

    Code Block
    languagebash
    cd $JFROG_HOME/artifactory/app/bin
    ./installService.sh
  7. Manage Artifactory.

    Code Block
    $JFROG_HOME/artifactory/app/bin/artifactoryctl start|stop|check
  8. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/. For example, on your local machine: http://localhost:8082/ui/.

  9. Check Artifactory Log.

    Code Block
    tail -f $JFROG_HOME/artifactory/var/log/console.log

RPM Upgrade

  1. Stop the current server.

    Code Block
    languagebash
    service artifactory stop
  2. Install Artifactory as a service on Red Hat compatible Linux distributions, as a root user.

    Code Block
    languagebash
    yum -y install jfrog-artifactory-<pro|oss|cpp-ce>-<version>.rpm
  3. Manage Artifactory.

    Code Block
    languagebash
    service artifactory start|stop
  4. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

  5. Check Artifactory Log.

    Code Block
    tail -f $JFROG_HOME/artifactory/var/log/console.log

Docker Upgrade
Anchor
dockerupgr7
dockerupgr7

  1. Stop and remove Artifactory using native Docker commands.

    Code Block
    languagebash
    titlefor example
    docker stop artifactory
    docker rm -f artifactory
  2. Set the path to your current Artifactory home, and make sure the directory permissions are set correctly.

    Code Block
    languagebash
    export ARTIFACTORY_HOME=<Mount Path to your current Artifactory data directory>
    chown -R 1030:1030 $ARTIFACTORY_HOME
  3. Start the Artifactory container

    Code Block
    languagebash
    docker run --name artifactory -v   $ARTIFACTORY_HOME:/var/opt/jfrog/artifactory -d -p 8081:8081 -p 8082:8082 releases-docker.jfrog.io/jfrog/artifactory-<pro|oss|cpp-ce>:latest
  4. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/.
  5. Check Artifactory Log.

    Code Block
    docker logs -f artifactory

Docker Compose Upgrade 
Anchor
dockercomposeupgr7
dockercomposeupgr7

  1. Stop the current server.

    Code Block
    docker-compose -p rt stop
  2.  Extract the contents of the compressed archive and go to the extracted folder.

    Code Block
    languagebash
    tar -xvf jfrog-artifactory-<pro|oss|cpp-ce>-<version>-compose.tar.gz
    cd artifactory-<pro|oss|cpp-ce>-<version>
    Note

    Copy the contents of the .env file in the previous installation to the newly created .env file in this archive without copying the versions, as this will affect the upgrade.

  3. Run the config.sh script to setup folders with required ownership.

    Code Block
    ./config.sh
  4. Manage Artifactory using native Docker Compose commands, docker-compose -p rt <action> command.

    Code Block
    languagebash
    # Starting from 7.8.x, PostgreSQL needs to be started before starting the other services.
    if PostgreSQL 9.6.11 running use -   docker-compose -p rt-postgres -f docker-compose-postgres-9-6.11v.yaml up -d
    if PostgreSQL 10.13  running use -   docker-compose -p rt-postgres -f docker-compose-postgres-10-13v.yaml up -d
    if PostgreSQL 12.3   running use -   docker-compose -p rt-postgres -f docker-compose-postgres.yaml up -d
    
    docker-compose -p rt up -d
    docker-compose -p rt ps
    docker-compose -p rt down
  5. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

  6. Check Artifactory Log.

    Code Block
    tail -f $ROOT_DATA_DIR/var/log/console.log

Debian Upgrade

  1. Stop the current server.

    Code Block
    languagebash
    service artifactory stop
  2. Install Artifactory as a service on compatible Linux distributions, as a root user.

    Code Block
    languagebash
    titleRun Installation
    dpkg -i jfrog-artifactory-<pro|oss|cpp-ce>-<version>.deb
  3. Manage Artifactory.

    Code Block
    languagebash
    service artifactory start|stop
  4. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/For example, on your local machine: http://localhost:8082/ui/

  5. Check Artifactory Log.

    Code Block
    languagebash
    tail -f $JFROG_HOME/artifactory/var/log/console.log

Helm Upgrade

Once you have a new chart version, you can upgrade your deployment.

Upgrading Single Node

  1. Use the following command to upgrade.

    Code Block
    languagebash
    titleSingle node
    helm upgrade artifactory --namespace artifactory jfrog/artifactory 
  2. If Artifactory was installed without providing a value to postgresql.postgresqlPassword (i.e., if the password was auto-generated), follow these instructions to get the current password.

    Code Block
    languagebash
    POSTGRES_PASSWORD=$(kubectl get secret -n <namespace> <myrelease>-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  3. Upgrade the release by passing the previously auto-generated secret.

    Code Block
    languagebash
    helm upgrade <myrelease> jfrog/artifactory --set postgresql.postgresqlPassword=${POSTGRES_PASSWORD} --namespace <namespace>

    This will apply any configuration changes on your existing deployment.

HA Upgrade

Upgrade path depends on the Artifactory helm chart that you used to install Artifactory HA. You must use the same chart that you used to install Artifactory HA.

HA Upgrade Using artifactory Chart
  1. Use the following command to upgrade.

    Code Block
    languagebash
    titleHA
    helm upgrade artifactory --namespace artifactory-ha jfrog/artifactory
  2. If Artifactory was installed without providing a value to postgresql.postgresqlPassword (i.e., if the password was auto-generated), follow these instructions to get the current password

    Code Block
    languagebash
    POSTGRES_PASSWORD=$(kubectl get secret -n <namespace> <myrelease>-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  3. Upgrade the release by passing the previously auto-generated secret.

    Code Block
    languagebash
    helm upgrade <myrelease> --namespace artifactory jfrog/artifactory --set postgresql.postgresqlPassword=${POSTGRES_PASSWORD}

    This will apply any configuration changes on your existing deployment.

HA Upgrade Using artifactory-ha Chart
  1. Use the following command to upgrade.

    Code Block
    languagebash
    titleHA
    helm upgrade artifactory-ha --namespace artifactory-ha jfrog/artifactory-ha
  2. If Artifactory was installed without providing a value to postgresql.postgresqlPassword (i.e., if the password was auto-generated), follow these instructions to get the current password

    Code Block
    languagebash
    POSTGRES_PASSWORD=$(kubectl get secret -n <namespace> <myrelease>-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  3. Upgrade the release by passing the previously auto-generated secret.

    Code Block
    languagebash
    helm upgrade <myrelease> --namespace artifactory-ha jfrog/artifactory-ha --set postgresql.postgresqlPassword=${POSTGRES_PASSWORD}

    This will apply any configuration changes on your existing deployment.

Windows Upgrade

  1. Stop the current server.

    Code Block
    languagebash
    titleStop Artifactory
    cd %JFROG_HOME%\artifactory\app\bin
    artifactory.bat stop
  2. Extract the contents of the compressed archive and go to the extracted folder.


  3. Replace the existing %JFROG_HOME%\app with the new app folder.

    Code Block
    languagebash
    titleUpgrade
    # Export variables to simplify commands, Example paths provided here
    SET %JFROG_HOME%=\myHome\jfrog
    SET %JF_NEW_VERSION%=\myHome\artifactory-7.x
    
    # Remove app
    rmdir %JFROG_HOME%\artifactory\app
    
    # Copy new app
    
    copy %$JF_NEW_VERSION%\app %$JFROG_HOME%\artifactory
    
    # Remove extracted new version
    rmdir %JF_NEW_VERSION%
    
  4. Manage Artifactory.

    Code Block
    %JFROG_HOME%\artifactory\app\bin\artifactory.bat start|stop
    Info
    titleFirewall Alerts for first time Artifactory Windows Installation

    When starting Artifactory, you may get some firewall exception messages. Select private networks and allow access to continue working.

  5. Access Artifactory from your browser at: http://SERVER_HOSTNAME:8082/ui/. For example, on your local machine: http://localhost:8082/ui/.

  6. Check Artifactory Log.

    Code Block
    type %JFROG_HOME%\artifactory\var\log\console.log

Enabling TLS 1.0 and 1.1 for Connectivity with Older Databases

Artifactory version 7.25.5 onwards includes OpenJDK version 11.0.11 and later. TLS 1.0 and TLS 1.1 are disabled by default from OpenJDK 11.0.11 onwards. If your database version does not support TLS 1.2, the Artifactory startup fails.

If you are unable to upgrade your database to a version that supports TLS 1.2 or later, perform the following steps to run Artifactory:

  1. Download the java.security file that has TLS 1.0 and 1.1 enabled.


  2. Create the directory, ${JFROG_HOME}/artifactory/var/bootstrap/artifactory/java.

    Code Block
    languagebash
    mkdir -p ${JFROG_HOME}/artifactory/var/bootstrap/artifactory/java
  3. Copy the java.security file into ${JFROG_HOME}/artifactory/var/bootstrap/artifactory/java.

  4. Provide the appropriate permissions to the directory.

    Code Block
    languagebash
    chmod 755 ${JFROG_HOME}/artifactory/var/bootstrap/artifactory/java/java.security
    Note

    Artifactory startup takes a backup of the existing java.security file and bootstraps custom java.security into the ${JFROG_HOME}/artifactory/app/third-party/java/conf/security folder.

Configuring Java Security File for Helm Installations

  1. Create the following local directory.

    Code Block
    languagebash
    mkdir -p java/configmap
  2. Download the java.security file that has TLS 1.0 and 1.1 enabled.


  3. Copy the java.security file to java/configmap.

  4. Run the following command to create a custom config map. For more information, refer to Using Config Maps.

    Code Block
    languagebash
    kubectl create configmap java-security-config --from-file=java/configmap/java.security
  5. Pass the following custom config map to your Helm install. For more information, refer to Using Config Maps.

    Code Block
    languageyml
    artifactory:
      preStartCommand: "mkdir -p /opt/jfrog/artifactory/var/bootstrap/artifactory/java && cp -Lrf /tmp/java/* /opt/jfrog/artifactory/var/bootstrap/artifactory/java/"
      customVolumes: |
       - name: java-security-config
         configMap:
           name: java-security-config
      customVolumeMounts: |
        - name: java-security-config
          mountPath: /tmp/java/java.security
          subPath: java.security

Upgrading an Enterprise HA Cluster

This section describes the process to upgrade your Artifactory Enterprise High Availability cluster. Since your cluster contains more than one node, you may complete the upgrade process without incurring any down time to the Artifactory service your organization is using.

Warning

Before you upgrade, ensure that the operating system version that you use is supported. See System Requirements for detailed information on operating system support.

Upgrade Steps

Upgrading to the latest version includes the following three phases:

  1. Upgrading the first node.
  2. Upgrading the additional nodes.
  3. Verifying the HA installation and configuration.
Tip
titleWant to stop using NFS?

To stop using a shared NFS once the upgrade procedure is complete (optional), see Migrating Data from NFS to migrate to an alternative storage.

Note
titleUsing NFS Data Folders with the JFrog Router

If your HA cluster uses an NFS as its filestore, you will need to verify that after the upgrade, the only shared folder is the $JFROG_HOME/data/artifactory directory (i.e., if the NFS is mounted directly to /var/opt/jfrog/artifactory/data you will encounter problems).

This is because the $JFROG_HOME/data/router folder must be unique to each node. This warning does not apply if you are using a different folder for your NFS.


Session Management Options

From version 6.2, Artifactory offers different alternatives for session management between the Artifactory HA members when accessing one of the members. If you do not configure your HA cluster to enable sticky sessions, the UI will not work until you have completed upgrading the whole cluster. 

The way to manage sessions is controlled via the artifactory.map.provider.type property (in the $JFROG_HOME/artifactory/var/etc/artifactory/artifactory.system.properties file) which can take the following values:

db
(default)
Sessions are managed by the database
distributed
Sessions are managed by Hazelcast
jvm
Sessions are managed by the JVM

If sessions are configured to be managed by the database, Artifactory will also schedule a cron job to cleanup old sessions.

The cron expression to trigger the sessions can be configured using the artifactory.db.session.cleanup.cron property in the $JFROG_HOME/artifactory/var/etc/artifactory/artifactory.system.properties file.

During installation, this cron expression is set with a default value that triggers the cleanup at a set minute (determined randomly) past each hour.


Note
titleUpgrading HA Nodes Backward Compatibility

From Artifactory 7.17.4, the HA cluster supports Cloud-Native compatibility, whereby all nodes are equal and the need to set primary and secondary nodes is no longer required.
To use this new functionality, add the "taskAffinity": "any" to the nodes you would like to include in the cluster to the Artifactory System YAML.

When you upgrade, you are still set with primary and secondary nodes.

You can change these to taskAffinity: any as follows:

Code Block
languagebash
node:
    haEnabled: true
    taskAffinity: any

and comment out or remove the following:

Code Block
languagebash
#primary: true

Upgrading the First Node

  1. Remove the first node from the load balancer. All requests will be directed to the additional nodes. Check the $HOME/logs/request.log and ARTIFACTORY_URL/api/tasks (search for "running") to ensure that Artifactory is completely inactive.
  2. In the target cluster, keep only one node running, and perform a graceful shutdown to the rest of the nodes.
  3. Continue with the upgrade according to the instructions for your installation type.
  4. Start up the first node. It will recognize that the HA cluster nodes are not all running the same version of Artifactory, and consequently, the system will be limited to allowing uploads and downloads. 

    Any attempt to perform other actions such as changing the DB schema, modifying permissions, changing repository configuration and more, are strictly blocked. This limitation will continue until all the cluster nodes are once again running the same version.

    Note
    titleVersion inconsistency generates exceptions

    Running the HA cluster nodes with different versions generates exceptions. These can be seen in the log files and reflect the temporary inconsistent state during the upgrade process. This is normal and should be ignored until all the cluster nodes are, once again, running the same version.

  5. When upgrading from Version 6.x and to 7.x
    Adjust your reverse proxy settings and update your load balancer configuration to use the new JFrog Platform URL http://<hostname>:8081.

    Note

    You may need to update the Custom URL base as part of the Artifactory upgrade from 6.x to 7.x. Remember to use a URL that will work correctly in all cases; for example: https://mydomain, which is correct if the reverse proxy is also updated to use both the Artifactory REST API port and the Router port as documented.

  6. Put the first node back to the load balancer.

Upgrading the Additional Node

For each additional node in your HA cluster, perform the following steps:

  1. Remove the node from the load balancer, so all requests are directed to the other nodes. Check the $HOME/logs/request.log and ARTIFACTORY_URL/api/tasks (search for "running") to ensure that Artifactory is completely inactive.
  2. Perform a graceful shutdown of the node. While the node is down, the load balancer should redirect all queries to the other nodes.

  3. Continue with the upgrade according to the instructions for your installation type.

  4. Start up the additional node.
  5. Add the additional node back to the load balancer.
  6. Repeat this process for each additional node.

Tip
titleCheck your installation

After starting up each additional node, we recommend inspecting the system.yaml and binarystore.xml files (under $JFROG_HOME/artifactory/var/etc/) to ensure they are correctly configured 

Verify the HA Installation and Configuration

Once you have completed upgrading your HA cluster, you can verify that your cluster has been installed and configured correctly using the following tests.

  1. Directly Access the Artifactory UI for the server you have just configured
  2. In the Admin module go to Service | Artifactory | System Logs to view the log and verify that you see an entry for HA Node ID.
  3. The bottom of the module navigation bar should also indicate that you are running with an Enterprise license. In case of an error you will see an error message in the page header.
  4. Access Artifactory through your load balancer and log in as Admin.
  5. In the Admin module go to Monitoring | Service Status. When selected the following table including details on all the Artifactory nodes in your cluster will be displayed.

  6. In the Admin module under General | Settings, verify that the Custom URL Base field is correctly configured to the URL of the Load Balancer.


Copyright © 2022 JFrog Ltd.