Skip to content

Commit 004b18c

Browse files
Merge branch 'master' into daniel.mohedano/gha-spec-tests
2 parents bef4732 + 79fa8aa commit 004b18c

4 files changed

Lines changed: 59 additions & 23 deletions

File tree

.github/CODEOWNERS

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -98,26 +98,26 @@
9898
**/*Waf*.java @DataDog/asm-java
9999
**/*Waf*.groovy @DataDog/asm-java
100100

101-
# @DataDog/ci-app-libraries-java
102-
/dd-java-agent/agent-ci-visibility/ @DataDog/ci-app-libraries-java
103-
/dd-java-agent/instrumentation/cucumber-5.4/ @DataDog/ci-app-libraries-java
104-
/dd-java-agent/instrumentation/jacoco-0.8.9/ @DataDog/ci-app-libraries-java
105-
/dd-java-agent/instrumentation/junit @DataDog/ci-app-libraries-java
106-
/dd-java-agent/instrumentation/karate/ @DataDog/ci-app-libraries-java
107-
/dd-java-agent/instrumentation/scalatest-3.0.8/ @DataDog/ci-app-libraries-java
108-
/dd-java-agent/instrumentation/selenium/ @DataDog/ci-app-libraries-java
109-
/dd-java-agent/instrumentation/testng/ @DataDog/ci-app-libraries-java
110-
/dd-java-agent/instrumentation/gradle/ @DataDog/ci-app-libraries-java
111-
/dd-java-agent/instrumentation/gradle-testing/ @DataDog/ci-app-libraries-java
112-
/dd-java-agent/instrumentation/maven @DataDog/ci-app-libraries-java
113-
/dd-java-agent/instrumentation/weaver-0.9/ @DataDog/ci-app-libraries-java
114-
/dd-smoke-tests/gradle/ @DataDog/ci-app-libraries-java
115-
/dd-smoke-tests/junit-console/ @DataDog/ci-app-libraries-java
116-
/dd-smoke-tests/maven/ @DataDog/ci-app-libraries-java
117-
/internal-api/src/main/java/datadog/trace/api/git/ @DataDog/ci-app-libraries-java
118-
**/civisibility/ @DataDog/ci-app-libraries-java
119-
**/CiVisibility*.java @DataDog/ci-app-libraries-java
120-
**/CiVisibility*.groovy @DataDog/ci-app-libraries-java
101+
# @DataDog/ci-app-libraries
102+
/dd-java-agent/agent-ci-visibility/ @DataDog/ci-app-libraries
103+
/dd-java-agent/instrumentation/cucumber-5.4/ @DataDog/ci-app-libraries
104+
/dd-java-agent/instrumentation/jacoco-0.8.9/ @DataDog/ci-app-libraries
105+
/dd-java-agent/instrumentation/junit @DataDog/ci-app-libraries
106+
/dd-java-agent/instrumentation/karate/ @DataDog/ci-app-libraries
107+
/dd-java-agent/instrumentation/scalatest-3.0.8/ @DataDog/ci-app-libraries
108+
/dd-java-agent/instrumentation/selenium/ @DataDog/ci-app-libraries
109+
/dd-java-agent/instrumentation/testng/ @DataDog/ci-app-libraries
110+
/dd-java-agent/instrumentation/gradle/ @DataDog/ci-app-libraries
111+
/dd-java-agent/instrumentation/gradle-testing/ @DataDog/ci-app-libraries
112+
/dd-java-agent/instrumentation/maven @DataDog/ci-app-libraries
113+
/dd-java-agent/instrumentation/weaver-0.9/ @DataDog/ci-app-libraries
114+
/dd-smoke-tests/gradle/ @DataDog/ci-app-libraries
115+
/dd-smoke-tests/junit-console/ @DataDog/ci-app-libraries
116+
/dd-smoke-tests/maven/ @DataDog/ci-app-libraries
117+
/internal-api/src/main/java/datadog/trace/api/git/ @DataDog/ci-app-libraries
118+
**/civisibility/ @DataDog/ci-app-libraries
119+
**/CiVisibility*.java @DataDog/ci-app-libraries
120+
**/CiVisibility*.groovy @DataDog/ci-app-libraries
121121

122122
# @DataDog/debugger-java (Live Debugger)
123123
/dd-java-agent/agent-debugger/ @DataDog/debugger-java

.gitlab/ci_visibility_generate_job.sh

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,40 @@ if [ -z "$labels" ] || ! echo "$labels" | grep -q "comp: ci visibility"; then
5959
exit 0
6060
fi
6161

62-
echo "PR #$pr_number is a CI Visibility PR - triggering test environment"
62+
echo "PR #$pr_number is a CI Visibility PR"
63+
64+
# Check for test-environment configuration in PR body
65+
set +e
66+
echo "Checking additional trigger configuration"
67+
target_branch="main"
68+
pr_body=$(gh pr view "$pr_number" --repo DataDog/dd-trace-java --json body --jq '.body' 2>&1)
69+
pr_body_status=$?
70+
if [ $pr_body_status -eq 0 ] && [ -n "$pr_body" ]; then
71+
# Check for skip directive: "test-environment-trigger: skip" (must be at start of line)
72+
if echo "$pr_body" | grep -qP '^test-environment-trigger:\s*skip'; then
73+
echo "Found 'test-environment-trigger: skip' in PR body - skipping trigger"
74+
add_dummy_job
75+
exit 0
76+
fi
77+
# Look for "test-environment-branch: <branch-name>" at start of line in PR body
78+
override_branch=$(echo "$pr_body" | grep -oP '^test-environment-branch:\s*\K[\S]+' | head -1)
79+
if [ -n "$override_branch" ]; then
80+
echo "Found test-environment branch override in PR body: '$override_branch'"
81+
target_branch="$override_branch"
82+
else
83+
echo "No test-environment-branch override in PR body - using default 'main' for downstream pipeline"
84+
fi
85+
else
86+
echo "Could not read PR body (status=$pr_body_status) - using default 'main' for downstream pipeline"
87+
fi
88+
set -e
6389

6490
cat <<EOF >>ci-visibility-test-environment.yml
6591
ci-visibility-test-environment:
6692
stage: ci-visibility-tests
6793
trigger:
6894
project: DataDog/apm-reliability/test-environment
69-
branch: main
95+
branch: $target_branch
7096
strategy: depend
7197
variables:
7298
UPSTREAM_PACKAGE_JOB: build

internal-api/src/main/java/datadog/trace/api/git/GitUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,11 @@ public static boolean isValidRef(@Nullable String ref) {
290290

291291
/** Checks if the provided string is a valid system path for Git operations */
292292
public static boolean isValidPath(@Nonnull String path) {
293-
return PATH_PATTERN.matcher(path).matches();
293+
if (!PATH_PATTERN.matcher(path).matches()) {
294+
return false;
295+
}
296+
// Reject path traversal sequences
297+
return !path.contains("..");
294298
}
295299

296300
/** Checks if the provided string is neither a valid commit SHA nor a valid Git reference */

internal-api/src/test/groovy/datadog/trace/api/git/GitUtilsTest.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,12 @@ class GitUtilsTest extends Specification {
153153
"mixed.Case-123_Test" | true
154154
"./relative/path" | true
155155
"multiple/levels/of/nesting" | true
156+
"/absolute/path" | true // absolute paths allowed
157+
"/home/user/workspace" | true // typical CI workspace
158+
"../parent/path" | false // path traversal at start
159+
"path/../other" | false // path traversal in middle
160+
"path/to/.." | false // path traversal at end
161+
"../../etc/passwd" | false // multiple path traversal
156162
"" | false // empty
157163
" " | false // whitespace only
158164
"path with spaces" | false // contains spaces

0 commit comments

Comments
 (0)