UNPKG

dd-trace

Version:

Datadog APM tracing client for JavaScript

94 lines (83 loc) 3.05 kB
'use strict' const getConfig = require('../../config') const { GIT_COMMIT_SHA, GIT_BRANCH, GIT_REPOSITORY_URL, GIT_TAG, GIT_COMMIT_MESSAGE, GIT_COMMIT_COMMITTER_DATE, GIT_COMMIT_COMMITTER_EMAIL, GIT_COMMIT_COMMITTER_NAME, GIT_COMMIT_AUTHOR_DATE, GIT_COMMIT_AUTHOR_EMAIL, GIT_COMMIT_AUTHOR_NAME, GIT_PULL_REQUEST_BASE_BRANCH, GIT_PULL_REQUEST_BASE_BRANCH_SHA, GIT_COMMIT_HEAD_SHA, } = require('./tags') const { normalizeRef } = require('./ci') const { filterSensitiveInfoFromRepository } = require('./url') function removeEmptyValues (tagsAndValues) { const filteredTags = {} for (let i = 0; i < tagsAndValues.length; i += 2) { const value = tagsAndValues[i + 1] if (value) { filteredTags[tagsAndValues[i]] = value } } return filteredTags } // The regex is inspired by // https://github.com/jonschlinkert/is-git-url/blob/396965ffabf2f46656c8af4c47bef1d69f09292e/index.js#L9C15-L9C87 // The `.git` suffix is optional in this version function validateGitRepositoryUrl (repoUrl) { return /(?:git|ssh|https?|git@[-\w.]+):(\/\/)?(.*?)(\/?|#[-\w.]+?)$/.test(repoUrl) } function validateGitCommitSha (gitCommitSha) { const isValidSha1 = /^[0-9a-f]{40}$/.test(gitCommitSha) const isValidSha256 = /^[0-9a-f]{64}$/.test(gitCommitSha) return isValidSha1 || isValidSha256 } function getUserProviderGitMetadata () { const { DD_GIT_COMMIT_SHA, DD_GIT_BRANCH, DD_GIT_REPOSITORY_URL, DD_GIT_TAG, DD_GIT_COMMIT_MESSAGE, DD_GIT_COMMIT_COMMITTER_NAME, DD_GIT_COMMIT_COMMITTER_EMAIL, DD_GIT_COMMIT_COMMITTER_DATE, DD_GIT_COMMIT_AUTHOR_NAME, DD_GIT_COMMIT_AUTHOR_EMAIL, DD_GIT_COMMIT_AUTHOR_DATE, DD_GIT_PULL_REQUEST_BASE_BRANCH, DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA, DD_GIT_COMMIT_HEAD_SHA, } = getConfig() const branch = normalizeRef(DD_GIT_BRANCH) let tag = normalizeRef(DD_GIT_TAG) // if DD_GIT_BRANCH is a tag, we associate its value to TAG too if ((DD_GIT_BRANCH ?? '').includes('origin/tags') || (DD_GIT_BRANCH ?? '').includes('refs/heads/tags')) { tag = normalizeRef(DD_GIT_BRANCH) } // Key value pairs are grouped in pairs of two return removeEmptyValues([ GIT_COMMIT_SHA, DD_GIT_COMMIT_SHA, GIT_BRANCH, branch, GIT_REPOSITORY_URL, filterSensitiveInfoFromRepository(DD_GIT_REPOSITORY_URL), GIT_TAG, tag, GIT_COMMIT_MESSAGE, DD_GIT_COMMIT_MESSAGE, GIT_COMMIT_COMMITTER_NAME, DD_GIT_COMMIT_COMMITTER_NAME, GIT_COMMIT_COMMITTER_DATE, DD_GIT_COMMIT_COMMITTER_DATE, GIT_COMMIT_COMMITTER_EMAIL, DD_GIT_COMMIT_COMMITTER_EMAIL, GIT_COMMIT_AUTHOR_NAME, DD_GIT_COMMIT_AUTHOR_NAME, GIT_COMMIT_AUTHOR_EMAIL, DD_GIT_COMMIT_AUTHOR_EMAIL, GIT_COMMIT_AUTHOR_DATE, DD_GIT_COMMIT_AUTHOR_DATE, GIT_PULL_REQUEST_BASE_BRANCH, DD_GIT_PULL_REQUEST_BASE_BRANCH, GIT_PULL_REQUEST_BASE_BRANCH_SHA, DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA, GIT_COMMIT_HEAD_SHA, DD_GIT_COMMIT_HEAD_SHA, ]) } module.exports = { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha }