Upgrading Avalon 6.5 to Avalon 7.0

See the Avalon 7.0 Release Notes for more information.

Requirements

Avalon 7.0 and above requires Ruby 2.5 or newer. If you're using RVM, simply run

rvm list # Get current ruby version, eg 2.2.1
rvm upgrade 2.2.1 2.5.5 # Installs Ruby 2.5.5 and migrate gemsets, wrappers, aliases and environment files

Avalon uses ImageMagick to crop the Collection poster

yum install ImageMagick

Config changes

Old settingNew settingNote

matterhorn:
  media_path: /path/to/dir

encoding:
  working_file_path: /path/to/dir

More information

home_page:
  featured_collections: ['col1_id', 'col2_id']
  carousel_collections: ['col3_id', 'col4_id', 'col5_id']

Choose which collections to display in the featured and carousel portions of the new homepage. 

More information on customizing the UI

Ingest API Authorization changes

Changes were made to the authorization mechanism for the Avalon Ingest API in Avalon 7.0. In previous versions, user sessions authenticated with an API token were granted admin user access. In version 7.0 and later, user sessions authenticated with an API token will be granted the same access as the token's associated user. The means that when upgrading to Avalon 7.0, any API tokens in use must be checked to ensure that their associated users have the necessary permissions to perform API functions. 

Upgrade Steps

For Manual Installations

  1. Download and deploy new code from the avalon repository.
  2. Install bundler 2, update gems, and migrate DB
gem install bundler -v 2.0.2
bundle install --with production --without development test
RAILS_ENV=production bundle exec rake db:migrate

3. Update JS dependencies

yarn install # in Avalon root dir

3. Copy rightsstatement.org controlled vocabulary from config/controlled_vocabulary.yml.example into config/controlled_vocabulary.yml

4. Update configuration, see Config changes above

5. Restart passenger (if using)

passenger-config restart-app

6. Replace Resque with Sidekiq (background jobs processor). Look at our Manual Instructions for more details.

pkill -f resque
RAILS_ENV=production bundle exec sidekiq -d -C config/sidekiq.yml

7. Upgrade mediainfo

sudo yum remove libmediainfo0-0.7.61-1.x86_64 libzen0-0.4.28-1.x86_64
sudo yum remove mediainfo
sudo yum install mediainfo libmediainfo libzen # Choose 19+ version

8. Retire Matterhorn 

sudo service matterhorn stop

9. Setup nginx streaming if you had been previously depending on the rails server to serve the HLS content.

10. Run waveform backfill script

This script will kick off many background jobs to generate waveform data for existing content for use with the new structural metadata editor.  (New content will have waveforms generated as part of the ingest process.)  If you have a lot of files ingested into Avalon the background jobs may take a very long time to run.  See Waveform Backfill Script for more information.

RAILS_ENV=production bundle exec rails r script/waveform_backfill.rb

For Docker Installations

Stop Matterhorn

docker-compose stop matterhorn

Update new code from avalon-docker

git checkout master
git pull

Pull or Rebuild Avalon container. 

docker-compose pull avalon
# or docker-compose build --no-cache avalon

Check config changes then replace the Avalon container

docker-compose up avalon worker