lib/datadog/ci/ext/environment.rb in ddtrace-0.52.0 vs lib/datadog/ci/ext/environment.rb in ddtrace-0.53.0
- old
+ new
@@ -61,10 +61,13 @@
# Fill out tags from local git as fallback
extract_local_git.each do |key, value|
tags[key] ||= value
end
+ # If user defined metadata is defined, overwrite
+ tags.merge!(extract_user_defined_git(env))
+
tags.reject { |_, v| v.nil? }
end
def normalize_ref(name)
refs = %r{^refs/(heads/)?}
@@ -129,10 +132,12 @@
TAG_PIPELINE_ID => build_id,
TAG_PIPELINE_NAME => env['BUILD_DEFINITIONNAME'],
TAG_PIPELINE_NUMBER => build_id,
TAG_PIPELINE_URL => pipeline_url,
TAG_JOB_URL => job_url,
+ TAG_STAGE_NAME => env['SYSTEM_STAGEDISPLAYNAME'],
+ TAG_JOB_NAME => env['SYSTEM_JOBDISPLAYNAME'],
Datadog::Ext::Git::TAG_REPOSITORY_URL =>
env['SYSTEM_PULLREQUEST_SOURCEREPOSITORYURI'] || env['BUILD_REPOSITORY_URI'],
Datadog::Ext::Git::TAG_COMMIT_SHA => env['SYSTEM_PULLREQUEST_SOURCECOMMITID'] || env['BUILD_SOURCEVERSION'],
Datadog::Ext::Git::TAG_BRANCH => branch,
Datadog::Ext::Git::TAG_TAG => tag,
@@ -223,16 +228,21 @@
Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BUILD_SOURCEVERSIONMESSAGE']
}
end
def extract_gitlab(env)
+ commit_author_name, commit_author_email = extract_name_email(env['CI_COMMIT_AUTHOR'])
+
url = env['CI_PIPELINE_URL']
{
- Datadog::Ext::Git::TAG_BRANCH => env['CI_COMMIT_BRANCH'],
+ Datadog::Ext::Git::TAG_BRANCH => env['CI_COMMIT_REF_NAME'],
Datadog::Ext::Git::TAG_COMMIT_SHA => env['CI_COMMIT_SHA'],
Datadog::Ext::Git::TAG_REPOSITORY_URL => env['CI_REPOSITORY_URL'],
Datadog::Ext::Git::TAG_TAG => env['CI_COMMIT_TAG'],
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => commit_author_name,
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => commit_author_email,
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_DATE => env['CI_COMMIT_TIMESTAMP'],
TAG_STAGE_NAME => env['CI_JOB_STAGE'],
TAG_JOB_NAME => env['CI_JOB_NAME'],
TAG_JOB_URL => env['CI_JOB_URL'],
TAG_PIPELINE_ID => env['CI_PIPELINE_ID'],
TAG_PIPELINE_NAME => env['CI_PROJECT_PATH'],
@@ -252,11 +262,11 @@
name = name.split('/').reject { |v| v.nil? || v.include?('=') }.join('/')
end
{
Datadog::Ext::Git::TAG_BRANCH => branch,
Datadog::Ext::Git::TAG_COMMIT_SHA => env['GIT_COMMIT'],
- Datadog::Ext::Git::TAG_REPOSITORY_URL => env['GIT_URL'],
+ Datadog::Ext::Git::TAG_REPOSITORY_URL => env['GIT_URL'] || env['GIT_URL_1'],
Datadog::Ext::Git::TAG_TAG => tag,
TAG_PIPELINE_ID => env['BUILD_TAG'],
TAG_PIPELINE_NAME => name,
TAG_PIPELINE_NUMBER => env['BUILD_NUMBER'],
TAG_PIPELINE_URL => env['BUILD_URL'],
@@ -310,11 +320,11 @@
env['BITRISEIO_GIT_BRANCH_DEST'] || env['BITRISE_GIT_BRANCH']
)
{
TAG_PROVIDER_NAME => 'bitrise',
TAG_PIPELINE_ID => env['BITRISE_BUILD_SLUG'],
- TAG_PIPELINE_NAME => env['BITRISE_APP_TITLE'],
+ TAG_PIPELINE_NAME => env['BITRISE_TRIGGERED_WORKFLOW_ID'],
TAG_PIPELINE_NUMBER => env['BITRISE_BUILD_NUMBER'],
TAG_PIPELINE_URL => env['BITRISE_BUILD_URL'],
TAG_WORKSPACE_PATH => env['BITRISE_SOURCE_DIR'],
Datadog::Ext::Git::TAG_REPOSITORY_URL => env['GIT_REPOSITORY_URL'],
Datadog::Ext::Git::TAG_COMMIT_SHA => commit,
@@ -322,10 +332,26 @@
Datadog::Ext::Git::TAG_TAG => env['BITRISE_GIT_TAG'],
Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env['BITRISE_GIT_MESSAGE']
}
end
+ def extract_user_defined_git(env)
+ {
+ Datadog::Ext::Git::TAG_REPOSITORY_URL => env[Datadog::Ext::Git::ENV_REPOSITORY_URL],
+ Datadog::Ext::Git::TAG_COMMIT_SHA => env[Datadog::Ext::Git::ENV_COMMIT_SHA],
+ Datadog::Ext::Git::TAG_BRANCH => env[Datadog::Ext::Git::ENV_BRANCH],
+ Datadog::Ext::Git::TAG_TAG => env[Datadog::Ext::Git::ENV_TAG],
+ Datadog::Ext::Git::TAG_COMMIT_MESSAGE => env[Datadog::Ext::Git::ENV_COMMIT_MESSAGE],
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_NAME => env[Datadog::Ext::Git::ENV_COMMIT_AUTHOR_NAME],
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_EMAIL => env[Datadog::Ext::Git::ENV_COMMIT_AUTHOR_EMAIL],
+ Datadog::Ext::Git::TAG_COMMIT_AUTHOR_DATE => env[Datadog::Ext::Git::ENV_COMMIT_AUTHOR_DATE],
+ Datadog::Ext::Git::TAG_COMMIT_COMMITTER_NAME => env[Datadog::Ext::Git::ENV_COMMIT_COMMITTER_NAME],
+ Datadog::Ext::Git::TAG_COMMIT_COMMITTER_EMAIL => env[Datadog::Ext::Git::ENV_COMMIT_COMMITTER_EMAIL],
+ Datadog::Ext::Git::TAG_COMMIT_COMMITTER_DATE => env[Datadog::Ext::Git::ENV_COMMIT_COMMITTER_DATE]
+ }.reject { |_, v| v.nil? || v.strip.empty? }
+ end
+
def git_commit_users
# Get committer and author information in one command.
output = exec_git_command("git show -s --format='%an\t%ae\t%at\t%cn\t%ce\t%ct'")
return unless output
@@ -426,16 +452,27 @@
env
end
def branch_or_tag(branch_or_tag)
branch = tag = nil
- if branch_or_tag.include?('tags/')
+ if branch_or_tag && branch_or_tag.include?('tags/')
tag = branch_or_tag
else
branch = branch_or_tag
end
[branch, tag]
+ end
+
+ def extract_name_email(name_and_email)
+ if name_and_email.include?('<') && (match = /^([^<]*)<([^>]*)>$/.match(name_and_email))
+ name = match[1]
+ name = name.strip if name
+ email = match[2]
+ return [name, email] if name && email
+ end
+
+ [nil, name_and_email]
end
end
# rubocop:enable Metrics/ModuleLength:
end
end