Upgrade from 4.24 to 4.25

Windows migration

For Windows deployment migration, simply run the standard SmartFace Platform installer. The wizard run re-creates all required services, updates binaries and executables and executes the database updates as well.

Linux migration

For Linux deployment you need to update docker containers and execute database migration.

Update container version.

When using pre-configured SmartFace deployment from our github, open .env file and the SF_VERSION, so the versions match:

SF_VERSION=v5_4.25.2
AC_VERSION=v5_1.10.0
SFS_VERSION=v5_1.24.3

When directly referencing image, update every path to match version above:

version: "3.4"
    services:
    sf-base:
        image: registry.gitlab.com/innovatrics/smartface/sf-base:v5_4.25.2
        container_name: SFBase
        command: --serviceName SFBase
        ports:
        - 2406:2406
        restart: unless-stopped
        environment:
        - RabbitMQ__Hostname
        - RabbitMQ__Username
        ...
Update docker containers definition

In your docker-compose.yml or corresponding container definition file update two containers SFApi and SFGraphQL and make sure both containers have those environments variables forwarded

  api:
    image: ${REGISTRY}sf-api:${SF_VERSION}
    container_name: SFApi
    ports:
      # we forward the configured ports to default SF ports
      - 8098:${Hosting__Port}
    restart: unless-stopped
    environment:
      - RabbitMQ__Hostname
      - RabbitMQ__Username
      - RabbitMQ__Password
      - RabbitMQ__Port
      - RabbitMQ__VirtualHost
      - RabbitMQ__UseSsl
      - MQTT__Hostname
      - MQTT__Username
      - MQTT__Password
      - MQTT__Port
      ...
    ...

  sf-graphql-api:
    image: ${REGISTRY}sf-graphql-api:${SF_VERSION}
    container_name: SFGraphQLApi
    ports:
      # we forward the configured ports to default SF ports
      - 8097:${Hosting__Port}
    restart: unless-stopped
    environment:
      - RabbitMQ__Hostname
      - RabbitMQ__Username
      - RabbitMQ__Password
      - RabbitMQ__Port
      - RabbitMQ__VirtualHost
      - RabbitMQ__UseSsl
      - MQTT__Hostname
      - MQTT__Username
      - MQTT__Password
      - MQTT__Port
      ...
    ...
Add Environment Variable

Add new Environment Variable to your in .env file.

# Number of camera services seeded
CameraServicesCount=5
Update run.sh

Replace your version of run.sh with latest version on our GitHub

Run upgrade scripts

Simply execute run.sh script shipped in our default deployment. In case you have custom deployment where you cannot use our pre-build script, call database upgrade manually. Please replace variables --rmq-* with your current configuration.

For MSSQL execute

docker run --rm --name admin_migration --volume $(pwd)/iengine.lic:/etc/innovatrics/iengine.lic --network sf-network ${SF_ADMIN_IMAGE} \
        run-migration \
            -p "$(getvalue CameraServicesCount)" \
            -c "$(getvalue ConnectionStrings__CoreDbContext)" -dbe $DB_ENGINE \
            --tenant-id default \
            --rmq-host "$(getvalue RabbitMQ__Hostname)" --rmq-user "$(getvalue RabbitMQ__Username)" --rmq-pass "$(getvalue RabbitMQ__Password)" \
            --rmq-virtual-host "$(getvalue RabbitMQ__VirtualHost)" --rmq-port "$(getvalue RabbitMQ__Port)" --rmq-streams-port "$(getvalue RabbitMQ__StreamsPort)" --rmq-use-ssl "$(getvalue RabbitMQ__UseSsl)" \
            --dependencies-availability-timeout 120

For PostgreSQL execute

docker run --rm --name admin_migration --volume $(pwd)/iengine.lic:/etc/innovatrics/iengine.lic --network sf-network ${SF_ADMIN_IMAGE} \
        run-migration \
            -p "$(getvalue CameraServicesCount)" \
            -c "$(getvalue ConnectionStrings__CoreDbContext)" -dbe $DB_ENGINE \
            --tenant-id default \
            --rmq-host "$(getvalue RabbitMQ__Hostname)" --rmq-user "$(getvalue RabbitMQ__Username)" --rmq-pass "$(getvalue RabbitMQ__Password)" \
            --rmq-virtual-host "$(getvalue RabbitMQ__VirtualHost)" --rmq-port "$(getvalue RabbitMQ__Port)" --rmq-streams-port "$(getvalue RabbitMQ__StreamsPort)" --rmq-use-ssl "$(getvalue RabbitMQ__UseSsl)" \
            --dependencies-availability-timeout 120