# # Test the migration from mysql/mariadb to postgresql. # .template_migration_from_mysql_to_postgresql: stage: test rules: - if: $CI_COMMIT_REF_NAME =~ /^private/ when: manual allow_failure: true - when: on_success variables: ENFORCE_DB_SERVICE: mysql script: - !reference [.scripts, configure_environment] - !reference [.scripts, zammad_db_init] - 'bundle exec rails r "FillDb.load(object_manager_attributes: {user: {multiselect: 1, multi_tree_select: 1}, ticket: {multiselect: 1, multi_tree_select: 1}, organization: {multiselect: 1, multi_tree_select: 1}}, organization: 2, agents: 2, tickets: 10, public_links: 2, nice: 0)"' - bundle exec rake zammad:db:pgloader > tmp/pgloader-command - sed -i 's#pgsql://zammad:pgsql_password@localhost/zammad#pgsql://zammad:zammad@postgresql/zammad_test#' tmp/pgloader-command - cat tmp/pgloader-command # for debugging - bundle exec rails r 'pp Ticket.all.as_json; pp User.all.as_json; pp Organization.all.as_json; pp PublicLink.all.as_json' > tmp/before-migration-dump.json - rm -f config/database.yml && export ENFORCE_DB_SERVICE=postgresql - !reference [.scripts, configure_environment] - bundle exec rake db:drop db:create # re-create an empty database - pgloader --verbose tmp/pgloader-command - bundle exec rails r 'Rails.cache.clear' - bundle exec rails r 'pp Ticket.all.as_json; pp User.all.as_json; pp Organization.all.as_json; pp PublicLink.all.as_json' > tmp/after-migration-dump.json - .gitlab/check_database_migration_consistency.sh - .gitlab/check_postgres_array_columns.rb migration:database:mysql_to_postgresql: extends: - .template_migration_from_mysql_to_postgresql services: - !reference [.services, mysql] - !reference [.services, redis] # We need to override the default postgresql service to use the stable version of postgresql until issues with pgloader are resolved. - name: $CI_REGISTRY/docker/zammad-postgresql:stable alias: postgresql migration:database:mariadb_to_postgresql: extends: - .template_migration_from_mysql_to_postgresql services: - !reference [.services, mariadb] - !reference [.services, redis] # We need to override the default postgresql service to use the stable version of postgresql until issues with pgloader are resolved. - name: $CI_REGISTRY/docker/zammad-postgresql:stable alias: postgresql