Module: Gitlab::QA::Runtime::Env
Constant Summary collapse
- ENV_VARIABLES =
Variables that are used in tests and are passed through to the docker container that executes the tests. These variables should be listed in /docs/what_tests_can_be_run.md#supported-gitlab-environment-variables unless they’re defined elsewhere (e.g.: docs.gitlab.com/ee/ci/variables/predefined_variables.html)
{ 'QA_IMAGE' => :qa_image, 'QA_REMOTE_GRID' => :remote_grid, 'QA_REMOTE_GRID_USERNAME' => :remote_grid_username, 'QA_REMOTE_GRID_ACCESS_KEY' => :remote_grid_access_key, 'QA_REMOTE_GRID_PROTOCOL' => :remote_grid_protocol, 'QA_BROWSER' => :browser, 'GITLAB_API_BASE' => :api_base, 'GITLAB_ADMIN_USERNAME' => :admin_username, 'GITLAB_ADMIN_PASSWORD' => :admin_password, 'GITLAB_USERNAME' => :user_username, 'GITLAB_PASSWORD' => :user_password, 'GITLAB_LDAP_USERNAME' => :ldap_username, 'GITLAB_LDAP_PASSWORD' => :ldap_password, 'GITLAB_FORKER_USERNAME' => :forker_username, 'GITLAB_FORKER_PASSWORD' => :forker_password, 'GITLAB_USER_TYPE' => :user_type, 'GITLAB_SANDBOX_NAME' => :gitlab_sandbox_name, 'GITLAB_QA_ACCESS_TOKEN' => :qa_access_token, 'GITLAB_QA_ADMIN_ACCESS_TOKEN' => :qa_admin_access_token, 'GITHUB_ACCESS_TOKEN' => :github_access_token, 'GITLAB_URL' => :gitlab_url, 'SIMPLE_SAML_HOSTNAME' => :simple_saml_hostname, 'SIMPLE_SAML_FINGERPRINT' => :simple_saml_fingerprint, 'ACCEPT_INSECURE_CERTS' => :accept_insecure_certs, 'EE_LICENSE' => :ee_license, 'GCLOUD_ACCOUNT_EMAIL' => :gcloud_account_email, 'GCLOUD_ACCOUNT_KEY' => :gcloud_account_key, 'CLOUDSDK_CORE_PROJECT' => :cloudsdk_core_project, 'GCLOUD_REGION' => :gcloud_region, 'SIGNUP_DISABLED' => :signup_disabled, 'QA_ADDITIONAL_REPOSITORY_STORAGE' => :qa_additional_repository_storage, 'QA_PRAEFECT_REPOSITORY_STORAGE' => :qa_praefect_repository_storage, 'QA_GITALY_NON_CLUSTER_STORAGE' => :qa_gitaly_non_cluster_storage, 'QA_COOKIES' => :qa_cookie, 'QA_DEBUG' => :qa_debug, 'QA_DEFAULT_BRANCH' => :qa_default_branch, 'QA_LOG_PATH' => :qa_log_path, 'QA_CAN_TEST_ADMIN_FEATURES' => :qa_can_test_admin_features, 'QA_CAN_TEST_GIT_PROTOCOL_V2' => :qa_can_test_git_protocol_v2, 'QA_CAN_TEST_PRAEFECT' => :qa_can_test_praefect, 'QA_DISABLE_RSPEC_RETRY' => :qa_disable_rspec_retry, 'QA_SIMULATE_SLOW_CONNECTION' => :qa_simulate_slow_connection, 'QA_SLOW_CONNECTION_LATENCY_MS' => :qa_slow_connection_latency_ms, 'QA_SLOW_CONNECTION_THROUGHPUT_KBPS' => :qa_slow_connection_throughput_kbps, 'GITLAB_QA_USERNAME_1' => :gitlab_qa_username_1, 'GITLAB_QA_PASSWORD_1' => :gitlab_qa_password_1, 'GITLAB_QA_USERNAME_2' => :gitlab_qa_username_2, 'GITLAB_QA_PASSWORD_2' => :gitlab_qa_password_2, 'GITHUB_USERNAME' => :github_username, 'GITHUB_PASSWORD' => :github_password, 'KNAPSACK_GENERATE_REPORT' => :knapsack_generate_report, 'KNAPSACK_REPORT_PATH' => :knapsack_report_path, 'KNAPSACK_TEST_FILE_PATTERN' => :knapsack_test_file_pattern, 'KNAPSACK_TEST_DIR' => :knapsack_test_dir, 'CI' => :ci, 'CI_JOB_URL' => :ci_job_url, 'CI_RUNNER_ID' => :ci_runner_id, 'CI_SERVER_HOST' => :ci_server_host, 'CI_SERVER_PERSONAL_ACCESS_TOKEN' => :ci_server_personal_access_token, 'CI_NODE_INDEX' => :ci_node_index, 'CI_NODE_TOTAL' => :ci_node_total, 'CI_PROJECT_NAME' => :ci_project_name, 'GITLAB_CI' => :gitlab_ci, 'QA_SKIP_PULL' => :qa_skip_pull, 'ELASTIC_URL' => :elastic_url, 'GITLAB_QA_LOOP_RUNNER_MINUTES' => :gitlab_qa_loop_runner_minutes, 'MAILHOG_HOSTNAME' => :mailhog_hostname, 'SLACK_QA_CHANNEL' => :slack_qa_channel, 'CI_SLACK_WEBHOOK_URL' => :ci_slack_webhook_url, 'SLACK_ICON_EMOJI' => :slack_icon_emoji, 'GITLAB_QA_FORMLESS_LOGIN_TOKEN' => :gitlab_qa_formless_login_token, 'GEO_MAX_FILE_REPLICATION_TIME' => :geo_max_file_replication_time, 'GEO_MAX_DB_REPLICATION_TIME' => :geo_max_db_replication_time, 'JIRA_HOSTNAME' => :jira_hostname, 'JIRA_ADMIN_USERNAME' => :jira_admin_username, 'JIRA_ADMIN_PASSWORD' => :jira_admin_password, 'CACHE_NAMESPACE_NAME' => :cache_namespace_name, 'DEPLOY_VERSION' => :deploy_version, 'GITLAB_QA_USER_AGENT' => :gitlab_qa_user_agent, 'GEO_FAILOVER' => :geo_failover }.freeze
Instance Method Summary collapse
- #ci_api_v4_url ⇒ Object
- #ci_commit_ref_name ⇒ Object
- #ci_job_name ⇒ Object
- #ci_job_token ⇒ Object
- #ci_pipeline_id ⇒ Object
- #ci_pipeline_source ⇒ Object
- #ci_pipeline_url ⇒ Object
- #ci_project_id ⇒ Object
- #default_branch ⇒ Object
- #deploy_environment ⇒ Object
- #dev_access_token_variable ⇒ Object
- #elastic_version ⇒ Object
- #geo_failover? ⇒ Boolean
- #gitlab_api_base ⇒ Object
- #gitlab_availability_timeout ⇒ Object
- #gitlab_bot_multi_project_pipeline_polling_token ⇒ Object
- #gitlab_ci_api_token ⇒ Object
- #gitlab_dev_username ⇒ Object
- #gitlab_username ⇒ Object
- #host_artifacts_dir ⇒ Object
- #initial_root_password ⇒ Object
- #override_default_password! ⇒ Object
- #pipeline_from_project_name ⇒ Object
- #qa_container_registry_access_token ⇒ Object
- #qa_dev_access_token ⇒ Object
- #qa_issue_url ⇒ Object
- #require_ci_slack_webhook_url! ⇒ Object
- #require_initial_password! ⇒ Object
- #require_kubernetes_environment! ⇒ Object
- #require_license! ⇒ Object
- #require_no_license! ⇒ Object
- #require_qa_access_token! ⇒ Object
- #require_qa_dev_access_token! ⇒ Object
- #require_slack_qa_channel! ⇒ Object
- #require_ssh_tunnel! ⇒ Object
- #run_id ⇒ Object
- #skip_pull? ⇒ Boolean
- #variables ⇒ Object
Instance Method Details
#ci_api_v4_url ⇒ Object
134 135 136 |
# File 'lib/gitlab/qa/runtime/env.rb', line 134 def ci_api_v4_url ENV['CI_API_V4_URL'] end |
#ci_commit_ref_name ⇒ Object
162 163 164 |
# File 'lib/gitlab/qa/runtime/env.rb', line 162 def ci_commit_ref_name ENV['CI_COMMIT_REF_NAME'] end |
#ci_job_name ⇒ Object
138 139 140 |
# File 'lib/gitlab/qa/runtime/env.rb', line 138 def ci_job_name ENV['CI_JOB_NAME'] end |
#ci_job_token ⇒ Object
142 143 144 |
# File 'lib/gitlab/qa/runtime/env.rb', line 142 def ci_job_token ENV['CI_JOB_TOKEN'] end |
#ci_pipeline_id ⇒ Object
154 155 156 |
# File 'lib/gitlab/qa/runtime/env.rb', line 154 def ci_pipeline_id ENV['CI_PIPELINE_ID'] end |
#ci_pipeline_source ⇒ Object
146 147 148 |
# File 'lib/gitlab/qa/runtime/env.rb', line 146 def ci_pipeline_source ENV['CI_PIPELINE_SOURCE'] end |
#ci_pipeline_url ⇒ Object
150 151 152 |
# File 'lib/gitlab/qa/runtime/env.rb', line 150 def ci_pipeline_url ENV['CI_PIPELINE_URL'] end |
#ci_project_id ⇒ Object
158 159 160 |
# File 'lib/gitlab/qa/runtime/env.rb', line 158 def ci_project_id ENV['CI_PROJECT_ID'] end |
#default_branch ⇒ Object
106 107 108 |
# File 'lib/gitlab/qa/runtime/env.rb', line 106 def default_branch ENV['QA_DEFAULT_BRANCH'] || 'master' end |
#deploy_environment ⇒ Object
202 203 204 |
# File 'lib/gitlab/qa/runtime/env.rb', line 202 def deploy_environment ENV['DEPLOY_ENVIRONMENT'] || pipeline_from_project_name end |
#dev_access_token_variable ⇒ Object
182 183 184 |
# File 'lib/gitlab/qa/runtime/env.rb', line 182 def dev_access_token_variable env_value_if_defined('GITLAB_QA_DEV_ACCESS_TOKEN') end |
#elastic_version ⇒ Object
210 211 212 |
# File 'lib/gitlab/qa/runtime/env.rb', line 210 def elastic_version ENV['ELASTIC_VERSION'] || '6.4.2'.freeze end |
#geo_failover? ⇒ Boolean
292 293 294 |
# File 'lib/gitlab/qa/runtime/env.rb', line 292 def geo_failover? enabled?(ENV['GEO_FAILOVER'], default: false) end |
#gitlab_api_base ⇒ Object
122 123 124 |
# File 'lib/gitlab/qa/runtime/env.rb', line 122 def gitlab_api_base ENV['GITLAB_API_BASE'] || 'https://gitlab.com/api/v4' end |
#gitlab_availability_timeout ⇒ Object
110 111 112 |
# File 'lib/gitlab/qa/runtime/env.rb', line 110 def gitlab_availability_timeout ENV.fetch('GITLAB_QA_AVAILABILITY_TIMEOUT', 360).to_i end |
#gitlab_bot_multi_project_pipeline_polling_token ⇒ Object
126 127 128 |
# File 'lib/gitlab/qa/runtime/env.rb', line 126 def gitlab_bot_multi_project_pipeline_polling_token ENV['GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN'] end |
#gitlab_ci_api_token ⇒ Object
130 131 132 |
# File 'lib/gitlab/qa/runtime/env.rb', line 130 def gitlab_ci_api_token ENV['GITLAB_CI_API_TOKEN'] end |
#gitlab_dev_username ⇒ Object
118 119 120 |
# File 'lib/gitlab/qa/runtime/env.rb', line 118 def gitlab_dev_username ENV['GITLAB_DEV_USERNAME'] || 'gitlab-qa-bot' end |
#gitlab_username ⇒ Object
114 115 116 |
# File 'lib/gitlab/qa/runtime/env.rb', line 114 def gitlab_username ENV['GITLAB_USERNAME'] || 'gitlab-qa' end |
#host_artifacts_dir ⇒ Object
206 207 208 |
# File 'lib/gitlab/qa/runtime/env.rb', line 206 def host_artifacts_dir @host_artifacts_dir ||= File.join(ENV['QA_ARTIFACTS_DIR'] || '/tmp/gitlab-qa', Runtime::Env.run_id) end |
#initial_root_password ⇒ Object
190 191 192 |
# File 'lib/gitlab/qa/runtime/env.rb', line 190 def initial_root_password ENV['GITLAB_INITIAL_ROOT_PASSWORD'] end |
#override_default_password! ⇒ Object
281 282 283 284 285 286 |
# File 'lib/gitlab/qa/runtime/env.rb', line 281 def override_default_password! require_initial_password! ENV['GITLAB_PASSWORD'] = initial_root_password ENV['GITLAB_ADMIN_PASSWORD'] = initial_root_password end |
#pipeline_from_project_name ⇒ Object
166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/gitlab/qa/runtime/env.rb', line 166 def pipeline_from_project_name if ci_project_name.to_s.start_with?('gitlab-qa') if ENV['TOP_UPSTREAM_SOURCE_JOB'].to_s.start_with?('https://ops.gitlab.net') 'staging-orchestrated' else QA::Runtime::Env.default_branch end else ci_project_name end end |
#qa_container_registry_access_token ⇒ Object
194 195 196 |
# File 'lib/gitlab/qa/runtime/env.rb', line 194 def qa_container_registry_access_token ENV['GITLAB_QA_CONTAINER_REGISTRY_ACCESS_TOKEN'] end |
#qa_dev_access_token ⇒ Object
186 187 188 |
# File 'lib/gitlab/qa/runtime/env.rb', line 186 def qa_dev_access_token ENV['GITLAB_QA_DEV_ACCESS_TOKEN'] end |
#qa_issue_url ⇒ Object
198 199 200 |
# File 'lib/gitlab/qa/runtime/env.rb', line 198 def qa_issue_url ENV['GITLAB_QA_ISSUE_URL'] end |
#require_ci_slack_webhook_url! ⇒ Object
257 258 259 260 261 |
# File 'lib/gitlab/qa/runtime/env.rb', line 257 def require_ci_slack_webhook_url! return unless ENV['CI_SLACK_WEBHOOK_URL'].to_s.strip.empty? raise ArgumentError, "Please provide CI_SLACK_WEBHOOK_URL" end |
#require_initial_password! ⇒ Object
269 270 271 272 273 |
# File 'lib/gitlab/qa/runtime/env.rb', line 269 def require_initial_password! return unless ENV['GITLAB_INITIAL_ROOT_PASSWORD'].to_s.strip.empty? raise ArgumentError, "Environment variable GITLAB_INITIAL_ROOT_PASSWORD must be provided to set an initial root password." end |
#require_kubernetes_environment! ⇒ Object
263 264 265 266 267 |
# File 'lib/gitlab/qa/runtime/env.rb', line 263 def require_kubernetes_environment! %w[GCLOUD_ACCOUNT_EMAIL GCLOUD_ACCOUNT_KEY CLOUDSDK_CORE_PROJECT].each do |env_key| raise ArgumentError, "Environment variable #{env_key} must be set to run kubernetes specs" unless ENV.key?(env_key) end end |
#require_license! ⇒ Object
227 228 229 230 231 |
# File 'lib/gitlab/qa/runtime/env.rb', line 227 def require_license! return if ENV.include?('EE_LICENSE') raise ArgumentError, 'GitLab License is not available. Please load a license into EE_LICENSE env variable.' end |
#require_no_license! ⇒ Object
233 234 235 236 237 |
# File 'lib/gitlab/qa/runtime/env.rb', line 233 def require_no_license! return unless ENV.include?('EE_LICENSE') raise ArgumentError, "Unexpected EE_LICENSE provided. Please unset it to continue." end |
#require_qa_access_token! ⇒ Object
239 240 241 242 243 |
# File 'lib/gitlab/qa/runtime/env.rb', line 239 def require_qa_access_token! return unless ENV['GITLAB_QA_ACCESS_TOKEN'].to_s.strip.empty? raise ArgumentError, "Please provide GITLAB_QA_ACCESS_TOKEN" end |
#require_qa_dev_access_token! ⇒ Object
245 246 247 248 249 |
# File 'lib/gitlab/qa/runtime/env.rb', line 245 def require_qa_dev_access_token! return unless ENV['GITLAB_QA_DEV_ACCESS_TOKEN'].to_s.strip.empty? raise ArgumentError, "Please provide GITLAB_QA_DEV_ACCESS_TOKEN" end |
#require_slack_qa_channel! ⇒ Object
251 252 253 254 255 |
# File 'lib/gitlab/qa/runtime/env.rb', line 251 def require_slack_qa_channel! return unless ENV['SLACK_QA_CHANNEL'].to_s.strip.empty? raise ArgumentError, "Please provide SLACK_QA_CHANNEL" end |
#require_ssh_tunnel! ⇒ Object
275 276 277 278 279 |
# File 'lib/gitlab/qa/runtime/env.rb', line 275 def require_ssh_tunnel! %w[TUNNEL_SSH_PRIVATE_KEY TUNNEL_SERVER_HOSTNAME TUNNEL_SSH_USER].each do |env_key| raise ArgumentError, "Environment variable #{env_key} must be set to run tunnel specs" unless ENV.key?(env_key) end end |
#run_id ⇒ Object
178 179 180 |
# File 'lib/gitlab/qa/runtime/env.rb', line 178 def run_id @run_id ||= "gitlab-qa-run-#{Time.now.strftime('%Y-%m-%d-%H-%M-%S')}-#{SecureRandom.hex(4)}" end |
#skip_pull? ⇒ Boolean
288 289 290 |
# File 'lib/gitlab/qa/runtime/env.rb', line 288 def skip_pull? enabled?(ENV['QA_SKIP_PULL'], default: false) end |
#variables ⇒ Object
214 215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/gitlab/qa/runtime/env.rb', line 214 def variables vars = {} ENV_VARIABLES.each do |name, attribute| # Variables that are overridden in the environment take precedence # over the defaults specified by the QA runtime. value = env_value_if_defined(name) || send(attribute) # rubocop:disable GitlabSecurity/PublicSend vars[name] = value if value end vars end |