blob: ebf2cdd875ae642f05f747a533b304e6d4e20df2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# frozen_string_literal: true
require 'pathname'
module Gitlab
def self.root
Pathname.new(File.expand_path('..', __dir__))
end
def self.version_info
Gitlab::VersionInfo.parse(Gitlab::VERSION)
end
def self.pre_release?
VERSION.include?('pre')
end
def self.config
Settings
end
def self.revision
@_revision ||= begin
if File.exist?(root.join("REVISION"))
File.read(root.join("REVISION")).strip.freeze
else
result = Gitlab::Popen.popen_with_detail(%W[#{config.git.bin_path} log --pretty=format:%h --abbrev=11 -n 1])
if result.status.success?
result.stdout.chomp.freeze
else
"Unknown"
end
end
end
end
COM_URL = 'https://gitlab.com'
STAGING_COM_URL = 'https://staging.gitlab.com'
APP_DIRS_PATTERN = %r{^/?(app|config|ee|lib|spec|\(\w*\))}.freeze
SUBDOMAIN_REGEX = %r{\Ahttps://[a-z0-9]+\.gitlab\.com\z}.freeze
VERSION = File.read(root.join("VERSION")).strip.freeze
INSTALLATION_TYPE = File.read(root.join("INSTALLATION_TYPE")).strip.freeze
HTTP_PROXY_ENV_VARS = %w(http_proxy https_proxy HTTP_PROXY HTTPS_PROXY).freeze
def self.com?
# Check `gl_subdomain?` as well to keep parity with gitlab.com
Gitlab.config.gitlab.url == COM_URL || gl_subdomain?
end
def self.com
yield if com?
end
def self.staging?
Gitlab.config.gitlab.url == STAGING_COM_URL
end
def self.canary?
Gitlab::Utils.to_boolean(ENV['CANARY'])
end
def self.com_and_canary?
com? && canary?
end
def self.com_but_not_canary?
com? && !canary?
end
def self.org?
Gitlab.config.gitlab.url == 'https://dev.gitlab.org'
end
def self.gl_subdomain?
SUBDOMAIN_REGEX === Gitlab.config.gitlab.url
end
def self.dev_env_org_or_com?
dev_env_or_com? || org?
end
def self.dev_env_or_com?
Rails.env.development? || com?
end
def self.dev_or_test_env?
Rails.env.development? || Rails.env.test?
end
def self.ee?
@is_ee ||=
# We use this method when the Rails environment is not loaded. This
# means that checking the presence of the License class could result in
# this method returning `false`, even for an EE installation.
#
# The `FOSS_ONLY` is always `string` or `nil`
# Thus the nil or empty string will result
# in using default value: false
#
# The behavior needs to be synchronised with
# config/helpers/is_ee_env.js
root.join('ee/app/models/license.rb').exist? &&
!%w[true 1].include?(ENV['FOSS_ONLY'].to_s)
end
def self.ee
yield if ee?
end
def self.http_proxy_env?
HTTP_PROXY_ENV_VARS.any? { |name| ENV[name] }
end
def self.process_name
return 'sidekiq' if Gitlab::Runtime.sidekiq?
return 'console' if Gitlab::Runtime.console?
return 'test' if Rails.env.test?
'web'
end
def self.maintenance_mode?
return false unless ::Gitlab::CurrentSettings.current_application_settings?
# `maintenance_mode` column was added to the `current_settings` table in 13.2
# When upgrading from < 13.2 to >=13.8 `maintenance_mode` will not be
# found in settings.
# `Gitlab::CurrentSettings#uncached_application_settings` in
# lib/gitlab/current_settings.rb is expected to handle such cases, and use
# the default value for the setting instead, but in this case, it doesn't,
# see https://gitlab.com/gitlab-org/gitlab/-/issues/321836
# As a work around, we check if the setting method is available
return false unless ::Gitlab::CurrentSettings.respond_to?(:maintenance_mode)
::Gitlab::CurrentSettings.maintenance_mode
end
end
|