UNPKG

dd-trace

Version:

Datadog APM tracing client for JavaScript

94 lines (83 loc) 3.03 kB
'use strict' 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') const { getEnvironmentVariables } = require('../../config-helper') function removeEmptyValues (tags) { return Object.keys(tags).reduce((filteredTags, tag) => { if (!tags[tag]) { return filteredTags } return { ...filteredTags, [tag]: tags[tag] } }, {}) } // 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.]+):(\/\/)?(.*?)(\/?|#[-\d\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 } = getEnvironmentVariables() 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) } 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 }