Migrate gitlab-rails database fails during upgrade to docker gitlab-ce:11.7.3-ce.0 with omniauth OAuth2Generic: "import/Myprovider is not a supported controller name"

When ugrading the GitLab version in docker-compose to 11.7.3 or 11.7.4, the migration fails with the following message:

gitlab    | Recipe: gitlab::database_migrations
gitlab    |   * bash[migrate gitlab-rails database] action run
gitlab    |     [execute] rake aborted!
gitlab    |               ArgumentError: 'import/Myprovider' is not a supported controller name. This can lead to potential routing problems. See http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:30:in `instance_eval'
gitlab    |               (eval):7:in `block in draw_route'
gitlab    |               (eval):4:in `each'
gitlab    |               (eval):4:in `draw_route'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:30:in `instance_eval'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:30:in `draw_route'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:17:in `draw_ce'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:11:in `draw'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/config/routes.rb:137:in `block in <top (required)>'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/config/routes.rb:4:in `<top (required)>'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/config/application.rb:221:in `block in <class:Application>'
gitlab    |               /opt/gitlab/embedded/service/gitlab-rails/config/environment.rb:6:in `<top (required)>'
gitlab    |               /opt/gitlab/embedded/bin/bundle:23:in `load'
gitlab    |               /opt/gitlab/embedded/bin/bundle:23:in `<main>'
gitlab    |               Tasks: TOP => gitlab:db:configure => environment
gitlab    |               (See full trace by running task with --trace)
gitlab    |
gitlab    |     ================================================================================
gitlab    |     Error executing action `run` on resource 'bash[migrate gitlab-rails database]'
gitlab    |     ================================================================================
gitlab    |
gitlab    |     Mixlib::ShellOut::ShellCommandFailed
gitlab    |     ------------------------------------
gitlab    |     Expected process to exit with [0], but received '1'
gitlab    |     ---- Begin output of "bash"  "/tmp/chef-script20190206-20-1nigldl" ----
gitlab    |     STDOUT: rake aborted!
gitlab    |     ArgumentError: 'import/Myprovider' is not a supported controller name. This can lead to potential routing problems. See http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:30:in `instance_eval'
gitlab    |     (eval):7:in `block in draw_route'
gitlab    |     (eval):4:in `each'
gitlab    |     (eval):4:in `draw_route'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:30:in `instance_eval'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:30:in `draw_route'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:17:in `draw_ce'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/patch/draw_route.rb:11:in `draw'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/config/routes.rb:137:in `block in <top (required)>'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/config/routes.rb:4:in `<top (required)>'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/config/application.rb:221:in `block in <class:Application>'
gitlab    |     /opt/gitlab/embedded/service/gitlab-rails/config/environment.rb:6:in `<top (required)>'
gitlab    |     /opt/gitlab/embedded/bin/bundle:23:in `load'
gitlab    |     /opt/gitlab/embedded/bin/bundle:23:in `<main>'
gitlab    |     Tasks: TOP => gitlab:db:configure => environment
gitlab    |     (See full trace by running task with --trace)
gitlab    |     STDERR:
gitlab    |     ---- End output of "bash"  "/tmp/chef-script20190206-20-1nigldl" ----
gitlab    |     Ran "bash"  "/tmp/chef-script20190206-20-1nigldl" returned 1
gitlab    |
gitlab    |     Resource Declaration:
gitlab    |     ---------------------
gitlab    |     # In /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/database_migrations.rb
gitlab    |
gitlab    |      51: bash "migrate gitlab-rails database" do
gitlab    |      52:   code <<-EOH
gitlab    |      53:     set -e
gitlab    |      54:     log_file="#{node['gitlab']['gitlab-rails']['log_directory']}/gitlab-rails-db-migrate-$(date +%Y-%m-%d-%H-%M-%S).log"
gitlab    |      55:     umask 077
gitlab    |      56:     /opt/gitlab/bin/gitlab-rake gitlab:db:configure 2>& 1 | tee ${log_file}
gitlab    |      57:     STATUS=${PIPESTATUS[0]}
gitlab    |      58:     echo $STATUS > #{db_migrate_status_file}
gitlab    |      59:     exit $STATUS
gitlab    |      60:   EOH
gitlab    |      61:   environment env_variables unless env_variables.empty?
gitlab    |      62:   notifies :run, "execute[clear the gitlab-rails cache]", :immediately
gitlab    |      63:   dependent_services.each do |svc|
gitlab    |      64:     notifies :restart, svc, :immediately
gitlab    |      65:   end
gitlab    |      66:   not_if "(test -f #{db_migrate_status_file}) && (cat #{db_migrate_status_file} | grep -Fx 0)"
gitlab    |      67:   only_if { node['gitlab']['gitlab-rails']['auto_migrate'] }
gitlab    |      68: end
gitlab    |
gitlab    |     Compiled Resource:
gitlab    |     ------------------
gitlab    |     # Declared in /opt/gitlab/embedded/cookbooks/cache/cookbooks/gitlab/recipes/database_migrations.rb:51:in `from_file'
gitlab    |
gitlab    |     bash("migrate gitlab-rails database") do
gitlab    |       action [:run]
gitlab    |       default_guard_interpreter :default
gitlab    |       command nil
gitlab    |       backup 5
gitlab    |       returns 0
gitlab    |       user nil
gitlab    |       interpreter "bash"
gitlab    |       declared_type :bash
gitlab    |       cookbook_name "gitlab"
gitlab    |       recipe_name "database_migrations"
gitlab    |       code "    set -e\n    log_file=\"/var/log/gitlab/gitlab-rails/gitlab-rails-db-migrate-$(date +%Y-%m-%d-%H-%M-%S).log\"\n    umask 077\n    /opt/gitlab/bin/gitlab-rake gitlab:db:configure 2>& 1 | tee ${log_file}\n    STATUS=${PIPESTATUS[0]}\n    echo $STATUS > /var/opt/gitlab/gitlab-rails/upgrade-status/db-migrate-873248b1f0d3a7a5535771a3a1635803-3424476\n    exit $STATUS\n"
gitlab    |       domain nil
gitlab    |       not_if "(test -f /var/opt/gitlab/gitlab-rails/upgrade-status/db-migrate-873248b1f0d3a7a5535771a3a1635803-3424476) && (cat /var/opt/gitlab/gitlab-rails/upgrade-status/db-migrate-873248b1f0d3a7a5535771a3a1635803-3424476 | grep -Fx 0)"
gitlab    |       only_if { #code block }
gitlab    |     end
gitlab    |
gitlab    |     System Info:
gitlab    |     ------------
gitlab    |     chef_version=13.6.4
gitlab    |     platform=ubuntu
gitlab    |     platform_version=16.04
gitlab    |     ruby=ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]
gitlab    |     program_name=/opt/gitlab/embedded/bin/chef-client
gitlab    |     executable=/opt/gitlab/embedded/bin/chef-client

We use omniauth. Our setup worked for the last year over all GitLab versions and follows the description on the omniauth-oauth2-generic gem repository. Our setup worked with 11.5.4, 11.6.5 and 11.7.0. Something changed from 11.7.0 to 11.7.3 that introduces breaking changes with the behaviour of omniauth.

11.7.4 does not work, either, as well as 11.6.9 and 11.5.10.

This is the omniauth section in our docker-compose.yml:

services:
  gitlab:
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        # [...]
        gitlab_rails['omniauth_enabled'] = true
        gitlab_rails['omniauth_allow_single_sign_on'] = ['Myprovider']
        gitlab_rails['omniauth_block_auto_created_users'] = false
        gitlab_rails['omniauth_providers'] = [
         {
            'name' => 'Myprovider',
            'app_id' => '${MYPROVIDER_CLIENT_ID}',
            'app_secret' => '${MYPROVIDER_CLIENT_SECRET}',
            'args' => {
              client_options: {
                'site' => 'https://login.myprovider.org/',
                'authorize_url' => '/oauth2/authorize/',
                'token_url' => '/oauth2/token/',
                'user_info_url' => '/oauth2/userinfo/'
              },
              user_response_structure: {
                root_path: ['user'],
                attributes: {
                  name: 'full_name',
                  nickname: 'username'
                }
              },
              name: 'Myprovider',
              strategy_class: "OmniAuth::Strategies::OAuth2Generic"
            }
          }
        ]

What can we do?