Skip to content

Setting external_url with underscore results in a broken GitLab CI/CD functionality

Summary

Steps to reproduce

Set the external_url with underscore in your /etc/gitlab/gitlab.rb file, disable letsencrypt integration, and run sudo gitlab-ctl reconfigure

What is the current bug behavior?

reconfigure will be completed successfully but some functionality will be broken:

  • error 500 will be shown when going to project Settings > CI/CD
  • Runners will not be able to process jobs

What is the expected correct behavior?

It should either work fine with the underscore or it should not be possible to set the underscore in external_url at all (reconfigure should throw an error if underscore is included in external_url).

Relevant logs

There is a known issue with the URLs with underscore in Ruby, see this Stack Overflow thread.

The full error message from the logs is shown below:

Completed 500 Internal Server Error in 50ms (ActiveRecord: 4.9ms | Elasticsearch: 0.0ms | Allocations: 17672)

URI::InvalidComponentError (bad component(expected host component): gitlab_host.tld):

lib/api/helpers/related_resources_helpers.rb:29:in `expose_url'
ee/app/controllers/ee/projects/settings/ci_cd_controller.rb:19:in `show'
ee/lib/gitlab/ip_address_state.rb:10:in `with'
ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address'
app/controllers/application_controller.rb:486:in `set_current_admin'
lib/gitlab/session.rb:11:in `with_session'
app/controllers/application_controller.rb:477:in `set_session_storage'
lib/gitlab/i18n.rb:73:in `with_locale'
lib/gitlab/i18n.rb:79:in `with_user_locale'
app/controllers/application_controller.rb:471:in `set_locale'
app/controllers/application_controller.rb:464:in `block in set_current_context'
lib/gitlab/application_context.rb:63:in `block in use'
lib/gitlab/application_context.rb:63:in `use'
lib/gitlab/application_context.rb:24:in `with_context'
app/controllers/application_controller.rb:455:in `set_current_context'
lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
lib/gitlab/metrics/transaction.rb:56:in `run'
lib/gitlab/metrics/rack_middleware.rb:16:in `call'
lib/gitlab/request_profiler/middleware.rb:17:in `call'
lib/gitlab/jira/middleware.rb:19:in `call'
lib/gitlab/middleware/go.rb:20:in `call'
lib/gitlab/etag_caching/middleware.rb:21:in `call'
lib/gitlab/middleware/multipart.rb:172:in `call'
lib/gitlab/middleware/read_only/controller.rb:50:in `call'
lib/gitlab/middleware/read_only.rb:18:in `call'
lib/gitlab/middleware/same_site_cookies.rb:27:in `call'
lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
lib/gitlab/middleware/basic_health_check.rb:25:in `call'
lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
lib/gitlab/middleware/request_context.rb:21:in `call'
config/initializers/fix_local_cache_middleware.rb:11:in `call'
lib/gitlab/metrics/requests_rack_middleware.rb:76:in `call'
lib/gitlab/middleware/release_env.rb:12:in `call'

Also, there was an old related issue on our side: "Completed 500 Internal Server Error" when enter each git repository's Setting->General.

Details of package version

Provide the package version installation details
ii  gitlab-ee                  13.10.2-ee.0       amd64              GitLab Enterprise Edition

Environment details

  • Operating System: Debian 10
  • Installation Target, remove incorrect values: GCP
  • Installation Type, remove incorrect values: new installation
  • Is there any other software running on the machine: no
  • Is this a single or multiple node installation: single-node
  • Resources
    • CPU: 2
    • Memory total: 8Gb

Configuration details

Provide the relevant sections of `/etc/gitlab/gitlab.rb`
external_url 'http://gitlab_host.tld'
letsencrypt['enable'] = false
Edited by Alexandr Tanayno