module Gitlab::QA::Runtime::Env
def ci_job_name
def ci_job_name ENV['CI_JOB_NAME'] end
def ci_job_url
def ci_job_url ENV['CI_JOB_URL'] end
def ci_project_name
def ci_project_name ENV['CI_PROJECT_NAME'] end
def ci_slack_webhook_url
def ci_slack_webhook_url ENV['CI_SLACK_WEBHOOK_URL'] end
def dev_access_token_variable
def dev_access_token_variable env_value_if_defined('GITLAB_QA_DEV_ACCESS_TOKEN') end
def env_value_if_defined(variable)
def env_value_if_defined(variable) # Pass through the variables if they are defined in the environment return "$#{variable}" if ENV[variable] end
def gitlab_api_base
def gitlab_api_base ENV['GITLAB_API_BASE'] || 'https://gitlab.com/api/v4' end
def host_artifacts_dir
def host_artifacts_dir @host_artifacts_dir ||= File.join(ENV['QA_ARTIFACTS_DIR'] || '/tmp/gitlab-qa', Runtime::Env.run_id) end
def qa_access_token
def qa_access_token ENV['GITLAB_QA_ACCESS_TOKEN'] end
def qa_dev_access_token
def qa_dev_access_token ENV['GITLAB_QA_DEV_ACCESS_TOKEN'] end
def require_ci_slack_webhook_url!
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
def require_kubernetes_environment!
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
def require_license!
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
def require_no_license!
def require_no_license! return unless ENV.include?('EE_LICENSE') raise ArgumentError, "Unexpected EE_LICENSE provided. Please unset it to continue." end
def require_qa_access_token!
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
def require_qa_dev_access_token!
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
def require_slack_qa_channel!
def require_slack_qa_channel! return unless ENV['SLACK_QA_CHANNEL'].to_s.strip.empty? raise ArgumentError, "Please provide SLACK_QA_CHANNEL" end
def run_id
def run_id @run_id ||= "gitlab-qa-run-#{Time.now.strftime('%Y-%m-%d-%H-%M-%S')}-#{SecureRandom.hex(4)}" end
def skip_pull?
def skip_pull? (ENV['QA_SKIP_PULL'] =~ /^(false|no|0)$/i) != 0 end
def slack_icon_emoji
def slack_icon_emoji ENV['SLACK_ICON_EMOJI'] end
def slack_qa_channel
def slack_qa_channel ENV['SLACK_QA_CHANNEL'] end
def variables
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