Skip to content

[test optimization] Update test optimization spec #5897

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 81 additions & 28 deletions packages/dd-trace/src/plugins/util/ci.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ const {
GIT_COMMIT_COMMITTER_NAME,
GIT_COMMIT_COMMITTER_EMAIL,
CI_NODE_LABELS,
CI_NODE_NAME
CI_NODE_NAME,
PR_NUMBER
} = require('./tags')
const { filterSensitiveInfoFromRepository } = require('./url')
const { getEnvironmentVariable } = require('../../config-helper')
Expand Down Expand Up @@ -109,7 +110,9 @@ module.exports = {
GIT_URL_1: JENKINS_GIT_REPOSITORY_URL_1,
DD_CUSTOM_TRACE_ID,
NODE_NAME,
NODE_LABELS
NODE_LABELS,
CHANGE_ID,
CHANGE_TARGET
} = env

tags = {
Expand All @@ -121,7 +124,9 @@ module.exports = {
[GIT_REPOSITORY_URL]: JENKINS_GIT_REPOSITORY_URL || JENKINS_GIT_REPOSITORY_URL_1,
[CI_WORKSPACE_PATH]: WORKSPACE,
[CI_ENV_VARS]: JSON.stringify({ DD_CUSTOM_TRACE_ID }),
[CI_NODE_NAME]: NODE_NAME
[CI_NODE_NAME]: NODE_NAME,
[PR_NUMBER]: CHANGE_ID,
[GIT_PULL_REQUEST_BASE_BRANCH]: CHANGE_TARGET
}

if (NODE_LABELS) {
Expand Down Expand Up @@ -172,7 +177,7 @@ module.exports = {
CI_RUNNER_ID,
CI_RUNNER_TAGS,
CI_MERGE_REQUEST_TARGET_BRANCH_NAME,
CI_MERGE_REQUEST_TARGET_BRANCH_SHA
CI_MERGE_REQUEST_IID
} = env

const { name, email } = parseEmailAndName(CI_COMMIT_AUTHOR)
Expand Down Expand Up @@ -203,7 +208,7 @@ module.exports = {
[CI_NODE_LABELS]: CI_RUNNER_TAGS,
[CI_NODE_NAME]: CI_RUNNER_ID,
[GIT_PULL_REQUEST_BASE_BRANCH]: CI_MERGE_REQUEST_TARGET_BRANCH_NAME,
[GIT_PULL_REQUEST_BASE_BRANCH_SHA]: CI_MERGE_REQUEST_TARGET_BRANCH_SHA
[PR_NUMBER]: CI_MERGE_REQUEST_IID
}
}

Expand All @@ -218,7 +223,8 @@ module.exports = {
CIRCLE_SHA1,
CIRCLE_REPOSITORY_URL,
CIRCLE_JOB,
CIRCLE_BUILD_NUM
CIRCLE_BUILD_NUM,
CIRCLE_PR_NUMBER
} = env

const pipelineUrl = `https://app.circleci.com/pipelines/workflows/${CIRCLE_WORKFLOW_ID}`
Expand All @@ -237,8 +243,9 @@ module.exports = {
[GIT_BRANCH]: CIRCLE_BRANCH,
[CI_ENV_VARS]: JSON.stringify({
CIRCLE_WORKFLOW_ID,
CIRCLE_BUILD_NUM
})
CIRCLE_BUILD_NUM,
}),
[PR_NUMBER]: CIRCLE_PR_NUMBER
}
}

Expand Down Expand Up @@ -317,7 +324,9 @@ module.exports = {
APPVEYOR_REPO_COMMIT_AUTHOR,
APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL,
APPVEYOR_REPO_COMMIT_MESSAGE,
APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED
APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED,
APPVEYOR_PULL_REQUEST_HEAD_COMMIT,
APPVEYOR_PULL_REQUEST_NUMBER
} = env

const pipelineUrl = `https://ci.appveyor.com/project/${APPVEYOR_REPO_NAME}/builds/${APPVEYOR_BUILD_ID}`
Expand All @@ -333,7 +342,12 @@ module.exports = {
[GIT_COMMIT_AUTHOR_NAME]: APPVEYOR_REPO_COMMIT_AUTHOR,
[GIT_COMMIT_AUTHOR_EMAIL]: APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL,
[GIT_COMMIT_MESSAGE]: APPVEYOR_REPO_COMMIT_MESSAGE + '\n' + APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED,
[GIT_PULL_REQUEST_BASE_BRANCH]: APPVEYOR_REPO_BRANCH
[GIT_COMMIT_HEAD_SHA]: APPVEYOR_PULL_REQUEST_HEAD_COMMIT,
[PR_NUMBER]: APPVEYOR_PULL_REQUEST_NUMBER
}

if (APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH) {
tags[GIT_PULL_REQUEST_BASE_BRANCH] = APPVEYOR_REPO_BRANCH
}

if (APPVEYOR_REPO_PROVIDER === 'github') {
Expand Down Expand Up @@ -367,7 +381,9 @@ module.exports = {
BUILD_REQUESTEDFOREMAIL,
BUILD_SOURCEVERSIONMESSAGE,
SYSTEM_STAGEDISPLAYNAME,
SYSTEM_JOBDISPLAYNAME
SYSTEM_JOBDISPLAYNAME,
SYSTEM_PULLREQUEST_PULLREQUESTNUMBER,
SYSTEM_PULLREQUEST_TARGETBRANCH
} = env

const ref = SYSTEM_PULLREQUEST_SOURCEBRANCH || BUILD_SOURCEBRANCH || BUILD_SOURCEBRANCHNAME
Expand All @@ -387,7 +403,9 @@ module.exports = {
[GIT_COMMIT_MESSAGE]: BUILD_SOURCEVERSIONMESSAGE,
[CI_STAGE_NAME]: SYSTEM_STAGEDISPLAYNAME,
[CI_JOB_NAME]: SYSTEM_JOBDISPLAYNAME,
[CI_ENV_VARS]: JSON.stringify({ SYSTEM_TEAMPROJECTID, BUILD_BUILDID, SYSTEM_JOBID })
[CI_ENV_VARS]: JSON.stringify({ SYSTEM_TEAMPROJECTID, BUILD_BUILDID, SYSTEM_JOBID }),
[PR_NUMBER]: SYSTEM_PULLREQUEST_PULLREQUESTNUMBER,
[GIT_PULL_REQUEST_BASE_BRANCH]: SYSTEM_PULLREQUEST_TARGETBRANCH
}

if (SYSTEM_TEAMFOUNDATIONSERVERURI && SYSTEM_TEAMPROJECTID && BUILD_BUILDID) {
Expand Down Expand Up @@ -415,7 +433,8 @@ module.exports = {
BITBUCKET_TAG,
BITBUCKET_PIPELINE_UUID,
BITBUCKET_CLONE_DIR,
BITBUCKET_PR_DESTINATION_BRANCH
BITBUCKET_PR_DESTINATION_BRANCH,
BITBUCKET_PR_ID
} = env

const url =
Expand All @@ -433,7 +452,8 @@ module.exports = {
[GIT_REPOSITORY_URL]: BITBUCKET_GIT_SSH_ORIGIN || BITBUCKET_GIT_HTTP_ORIGIN,
[CI_WORKSPACE_PATH]: BITBUCKET_CLONE_DIR,
[CI_PIPELINE_ID]: BITBUCKET_PIPELINE_UUID && BITBUCKET_PIPELINE_UUID.replaceAll(/{|}/gm, ''),
[GIT_PULL_REQUEST_BASE_BRANCH]: BITBUCKET_PR_DESTINATION_BRANCH
[GIT_PULL_REQUEST_BASE_BRANCH]: BITBUCKET_PR_DESTINATION_BRANCH,
[PR_NUMBER]: BITBUCKET_PR_ID
}
}

Expand All @@ -450,7 +470,8 @@ module.exports = {
BITRISE_SOURCE_DIR,
GIT_REPOSITORY_URL: BITRISE_GIT_REPOSITORY_URL,
BITRISE_GIT_TAG,
BITRISE_GIT_MESSAGE
BITRISE_GIT_MESSAGE,
BITRISE_PULL_REQUEST
} = env

tags = {
Expand All @@ -465,7 +486,8 @@ module.exports = {
[GIT_TAG]: BITRISE_GIT_TAG,
[GIT_BRANCH]: BITRISEIO_GIT_BRANCH_DEST || BITRISE_GIT_BRANCH,
[GIT_COMMIT_MESSAGE]: BITRISE_GIT_MESSAGE,
[GIT_PULL_REQUEST_BASE_BRANCH]: BITRISEIO_GIT_BRANCH_DEST
[GIT_PULL_REQUEST_BASE_BRANCH]: BITRISEIO_GIT_BRANCH_DEST,
[PR_NUMBER]: BITRISE_PULL_REQUEST
}
}

Expand All @@ -484,7 +506,9 @@ module.exports = {
BUILDKITE_BUILD_AUTHOR,
BUILDKITE_BUILD_AUTHOR_EMAIL,
BUILDKITE_MESSAGE,
BUILDKITE_AGENT_ID
BUILDKITE_AGENT_ID,
BUILDKITE_PULL_REQUEST,
BUILDKITE_PULL_REQUEST_BASE_BRANCH
} = env

const extraTags = Object.keys(env).filter(envVar =>
Expand Down Expand Up @@ -514,7 +538,12 @@ module.exports = {
BUILDKITE_JOB_ID
}),
[CI_NODE_NAME]: BUILDKITE_AGENT_ID,
[CI_NODE_LABELS]: JSON.stringify(extraTags)
[CI_NODE_LABELS]: JSON.stringify(extraTags),
[PR_NUMBER]: BUILDKITE_PULL_REQUEST,
}

if (BUILDKITE_PULL_REQUEST) {
tags[GIT_PULL_REQUEST_BASE_BRANCH] = BUILDKITE_PULL_REQUEST_BASE_BRANCH
}
}

Expand All @@ -530,7 +559,9 @@ module.exports = {
TRAVIS_BUILD_NUMBER,
TRAVIS_BUILD_WEB_URL,
TRAVIS_BUILD_DIR,
TRAVIS_COMMIT_MESSAGE
TRAVIS_COMMIT_MESSAGE,
TRAVIS_PULL_REQUEST,
TRAVIS_PULL_REQUEST_SHA
} = env

tags = {
Expand All @@ -545,7 +576,10 @@ module.exports = {
[CI_WORKSPACE_PATH]: TRAVIS_BUILD_DIR,
[GIT_TAG]: TRAVIS_TAG,
[GIT_BRANCH]: TRAVIS_PULL_REQUEST_BRANCH || TRAVIS_BRANCH,
[GIT_COMMIT_MESSAGE]: TRAVIS_COMMIT_MESSAGE
[GIT_COMMIT_MESSAGE]: TRAVIS_COMMIT_MESSAGE,
[GIT_COMMIT_HEAD_SHA]: TRAVIS_PULL_REQUEST_SHA,
[GIT_PULL_REQUEST_BASE_BRANCH]: TRAVIS_BRANCH,
[PR_NUMBER]: TRAVIS_PULL_REQUEST
}
}

Expand All @@ -562,7 +596,8 @@ module.exports = {
BUDDY_PIPELINE_ID,
BUDDY_PIPELINE_NAME,
BUDDY_SCM_URL,
BUDDY_RUN_PR_BASE_BRANCH
BUDDY_RUN_PR_BASE_BRANCH,
BUDDY_RUN_PR_NO
} = env
tags = {
[CI_PROVIDER_NAME]: 'buddy',
Expand All @@ -577,19 +612,28 @@ module.exports = {
[GIT_COMMIT_MESSAGE]: BUDDY_EXECUTION_REVISION_MESSAGE,
[GIT_COMMIT_COMMITTER_NAME]: BUDDY_EXECUTION_REVISION_COMMITTER_NAME,
[GIT_COMMIT_COMMITTER_EMAIL]: BUDDY_EXECUTION_REVISION_COMMITTER_EMAIL,
[GIT_PULL_REQUEST_BASE_BRANCH]: BUDDY_RUN_PR_BASE_BRANCH
[GIT_PULL_REQUEST_BASE_BRANCH]: BUDDY_RUN_PR_BASE_BRANCH,
[PR_NUMBER]: BUDDY_RUN_PR_NO
}
}

if (env.TEAMCITY_VERSION) {
const { BUILD_URL, TEAMCITY_BUILDCONF_NAME, DATADOG_BUILD_ID } = env
const {
BUILD_URL,
TEAMCITY_BUILDCONF_NAME,
DATADOG_BUILD_ID,
TEAMCITY_PULLREQUEST_NUMBER,
TEAMCITY_PULLREQUEST_TARGET_BRANCH
} = env
tags = {
[CI_PROVIDER_NAME]: 'teamcity',
[CI_JOB_URL]: BUILD_URL,
[CI_JOB_NAME]: TEAMCITY_BUILDCONF_NAME,
[CI_ENV_VARS]: JSON.stringify({
DATADOG_BUILD_ID
})
}),
[PR_NUMBER]: TEAMCITY_PULLREQUEST_NUMBER,
[GIT_PULL_REQUEST_BASE_BRANCH]: TEAMCITY_PULLREQUEST_TARGET_BRANCH
}
}

Expand All @@ -599,7 +643,9 @@ module.exports = {
CF_PIPELINE_NAME,
CF_BUILD_URL,
CF_STEP_NAME,
CF_BRANCH
CF_BRANCH,
CF_PULL_REQUEST_NUMBER,
CF_PULL_REQUEST_TARGET
} = env
tags = {
[CI_PROVIDER_NAME]: 'codefresh',
Expand All @@ -609,7 +655,9 @@ module.exports = {
[CI_JOB_NAME]: CF_STEP_NAME,
[CI_ENV_VARS]: JSON.stringify({
CF_BUILD_ID
})
}),
[PR_NUMBER]: CF_PULL_REQUEST_NUMBER,
[GIT_PULL_REQUEST_BASE_BRANCH]: CF_PULL_REQUEST_TARGET
}

const isTag = CF_BRANCH && CF_BRANCH.includes('tags/')
Expand Down Expand Up @@ -649,7 +697,9 @@ module.exports = {
DRONE_TAG,
DRONE_COMMIT_AUTHOR_NAME,
DRONE_COMMIT_AUTHOR_EMAIL,
DRONE_COMMIT_MESSAGE
DRONE_COMMIT_MESSAGE,
DRONE_PULL_REQUEST,
DRONE_TARGET_BRANCH
} = env
tags = {
[CI_PROVIDER_NAME]: 'drone',
Expand All @@ -664,14 +714,17 @@ module.exports = {
[GIT_TAG]: DRONE_TAG,
[GIT_COMMIT_AUTHOR_NAME]: DRONE_COMMIT_AUTHOR_NAME,
[GIT_COMMIT_AUTHOR_EMAIL]: DRONE_COMMIT_AUTHOR_EMAIL,
[GIT_COMMIT_MESSAGE]: DRONE_COMMIT_MESSAGE
[GIT_COMMIT_MESSAGE]: DRONE_COMMIT_MESSAGE,
[PR_NUMBER]: DRONE_PULL_REQUEST,
[GIT_PULL_REQUEST_BASE_BRANCH]: DRONE_TARGET_BRANCH
}
}

normalizeTag(tags, CI_WORKSPACE_PATH, resolveTilde)
normalizeTag(tags, GIT_REPOSITORY_URL, filterSensitiveInfoFromRepository)
normalizeTag(tags, GIT_BRANCH, normalizeRef)
normalizeTag(tags, GIT_TAG, normalizeRef)
normalizeTag(tags, GIT_PULL_REQUEST_BASE_BRANCH, normalizeRef)

return removeEmptyValues(tags)
}
Expand Down
5 changes: 4 additions & 1 deletion packages/dd-trace/src/plugins/util/tags.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ const CI_NODE_LABELS = 'ci.node.labels'

const CI_ENV_VARS = '_dd.ci.env_vars'

const PR_NUMBER = 'pr.number'

module.exports = {
GIT_COMMIT_SHA,
GIT_BRANCH,
Expand All @@ -54,5 +56,6 @@ module.exports = {
CI_STAGE_NAME,
CI_ENV_VARS,
CI_NODE_NAME,
CI_NODE_LABELS
CI_NODE_LABELS,
PR_NUMBER
}
2 changes: 2 additions & 0 deletions packages/dd-trace/src/supported-configurations.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@
"DD_GIT_PROPERTIES_FILE": ["A"],
"DD_GIT_REPOSITORY_URL": ["A"],
"DD_GIT_TAG": ["A"],
"DD_GIT_PULL_REQUEST_BASE_BRANCH": ["A"],
"DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA": ["A"],
"DD_GRPC_CLIENT_ERROR_STATUSES": ["A"],
"DD_GRPC_SERVER_ERROR_STATUSES": ["A"],
"DD_IAST_DB_ROWS_TO_TAINT": ["A"],
Expand Down
10 changes: 9 additions & 1 deletion packages/dd-trace/test/plugins/util/ci-env/appveyor.json
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,9 @@
"APPVEYOR_BUILD_FOLDER": "/foo/bar",
"APPVEYOR_BUILD_ID": "appveyor-build-id",
"APPVEYOR_BUILD_NUMBER": "appveyor-pipeline-number",
"APPVEYOR_PULL_REQUEST_HEAD_COMMIT": "724faca55efebf66fc15bfccc34577c64c5480bd",
"APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH": "origin/pr",
"APPVEYOR_PULL_REQUEST_NUMBER": 42,
"APPVEYOR_REPO_BRANCH": "origin/master",
"APPVEYOR_REPO_COMMIT": "b9f0fb3fdbb94c9d24b2c75b49663122a529e123",
"APPVEYOR_REPO_COMMIT_AUTHOR": "appveyor-commit-author-name",
Expand All @@ -367,9 +369,12 @@
"git.branch": "pr",
"git.commit.author.email": "appveyor-commit-author-email@datadoghq.com",
"git.commit.author.name": "appveyor-commit-author-name",
"git.commit.head_sha": "724faca55efebf66fc15bfccc34577c64c5480bd",
"git.commit.message": "appveyor-commit-message\nappveyor-commit-message-extended",
"git.commit.sha": "b9f0fb3fdbb94c9d24b2c75b49663122a529e123",
"git.repository_url": "https://github.com/appveyor-repo-name.git"
"git.pull_request.base_branch": "master",
"git.repository_url": "https://github.com/appveyor-repo-name.git",
"pr.number": 42
}
],
[
Expand All @@ -378,6 +383,7 @@
"APPVEYOR_BUILD_FOLDER": "/foo/bar",
"APPVEYOR_BUILD_ID": "appveyor-build-id",
"APPVEYOR_BUILD_NUMBER": "appveyor-pipeline-number",
"APPVEYOR_PULL_REQUEST_HEAD_COMMIT": "724faca55efebf66fc15bfccc34577c64c5480bd",
"APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH": "refs/heads/pr",
"APPVEYOR_REPO_BRANCH": "refs/heads/master",
"APPVEYOR_REPO_COMMIT": "b9f0fb3fdbb94c9d24b2c75b49663122a529e123",
Expand All @@ -399,8 +405,10 @@
"git.branch": "pr",
"git.commit.author.email": "appveyor-commit-author-email@datadoghq.com",
"git.commit.author.name": "appveyor-commit-author-name",
"git.commit.head_sha": "724faca55efebf66fc15bfccc34577c64c5480bd",
"git.commit.message": "appveyor-commit-message\nappveyor-commit-message-extended",
"git.commit.sha": "b9f0fb3fdbb94c9d24b2c75b49663122a529e123",
"git.pull_request.base_branch": "master",
"git.repository_url": "https://github.com/appveyor-repo-name.git"
}
],
Expand Down
Loading