Module: Datadog::CI::Ext::Environment

Defined in:
lib/datadog/ci/ext/environment.rb,
lib/datadog/ci/ext/environment/extractor.rb,
lib/datadog/ci/ext/environment/providers.rb,
lib/datadog/ci/ext/environment/providers/base.rb,
lib/datadog/ci/ext/environment/providers/azure.rb,
lib/datadog/ci/ext/environment/providers/buddy.rb,
lib/datadog/ci/ext/environment/providers/drone.rb,
lib/datadog/ci/ext/environment/providers/gitlab.rb,
lib/datadog/ci/ext/environment/providers/travis.rb,
lib/datadog/ci/ext/environment/providers/bitrise.rb,
lib/datadog/ci/ext/environment/providers/jenkins.rb,
lib/datadog/ci/ext/environment/providers/appveyor.rb,
lib/datadog/ci/ext/environment/providers/circleci.rb,
lib/datadog/ci/ext/environment/providers/teamcity.rb,
lib/datadog/ci/ext/environment/providers/bitbucket.rb,
lib/datadog/ci/ext/environment/providers/buildkite.rb,
lib/datadog/ci/ext/environment/providers/codefresh.rb,
lib/datadog/ci/ext/environment/providers/local_git.rb,
lib/datadog/ci/ext/environment/providers/github_actions.rb,
lib/datadog/ci/ext/environment/providers/aws_code_pipeline.rb,
lib/datadog/ci/ext/environment/providers/user_defined_tags.rb,
lib/datadog/ci/ext/environment/configuration_discrepancy_checker.rb

Overview

Defines constants for CI tags

Defined Under Namespace

Modules: Provider, Providers Classes: ConfigurationDiscrepancyChecker, Extractor

Constant Summary collapse

TAG_JOB_ID =
"ci.job.id"
TAG_JOB_NAME =
"ci.job.name"
TAG_JOB_URL =
"ci.job.url"
TAG_PIPELINE_ID =
"ci.pipeline.id"
TAG_PIPELINE_NAME =
"ci.pipeline.name"
TAG_PIPELINE_NUMBER =
"ci.pipeline.number"
TAG_PIPELINE_URL =
"ci.pipeline.url"
TAG_PROVIDER_NAME =
"ci.provider.name"
TAG_STAGE_NAME =
"ci.stage.name"
TAG_WORKSPACE_PATH =
"ci.workspace_path"
TAG_NODE_LABELS =
"ci.node.labels"
TAG_NODE_NAME =
"ci.node.name"
TAG_CI_ENV_VARS =
"_dd.ci.env_vars"
TAG_PR_NUMBER =
"pr.number"
POSSIBLE_BUNDLE_LOCATIONS =
%w[vendor/bundle .bundle].freeze
ENV_SPECIAL_KEY_FOR_GIT_COMMIT_HEAD_SHA =
"_dd.ci.environment.git_commit_head_sha"

Class Method Summary collapse

Class Method Details

.ensure_post_conditions(tags) ⇒ Object



104
105
106
107
# File 'lib/datadog/ci/ext/environment.rb', line 104

def ensure_post_conditions(tags)
  validate_repository_url(tags[Git::TAG_REPOSITORY_URL])
  validate_git_sha(tags[Git::TAG_COMMIT_SHA])
end

.reset!Object



59
60
61
# File 'lib/datadog/ci/ext/environment.rb', line 59

def reset!
  @tags = nil
end

.tags(env) ⇒ Object



55
56
57
# File 'lib/datadog/ci/ext/environment.rb', line 55

def tags(env)
  @tags ||= extract_tags(env).freeze
end

.validate_git_sha(git_sha) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/datadog/ci/ext/environment.rb', line 116

def validate_git_sha(git_sha)
  return if Utils::Git.valid_commit_sha?(git_sha)

  message = "DD_GIT_COMMIT_SHA must be a full-length git SHA."

  message += if git_sha.nil? || git_sha.empty?
    " No value was set and no SHA was automatically extracted."
  elsif git_sha.length < Git::SHA_LENGTH
    " Expected SHA length #{Git::SHA_LENGTH}, was #{git_sha.length}."
  else
    " Expected SHA to be a valid HEX number, got #{git_sha}."
  end

  Datadog.logger.error(message)
  Core::Telemetry::Logger.error(message)
end

.validate_repository_url(repo_url) ⇒ Object



109
110
111
112
113
114
# File 'lib/datadog/ci/ext/environment.rb', line 109

def validate_repository_url(repo_url)
  return if !repo_url.nil? && !repo_url.empty?

  Datadog.logger.error("DD_GIT_REPOSITORY_URL is not set or empty; no repo URL was automatically extracted")
  Core::Telemetry::Logger.error("DD_GIT_REPOSITORY_URL is not set or empty; no repo URL was automatically extracted")
end