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