123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #
- # 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
|