Skip to content

Commit 70981b0

Browse files
authored
Merge branch 'main' into jackson221
2 parents c4b336d + 3b5da67 commit 70981b0

File tree

494 files changed

+13238
-4180
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

494 files changed

+13238
-4180
lines changed

.buildkite/hooks/pre-command

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ if [[ "${SMART_RETRIES:-}" == "true" && "${BUILDKITE_RETRY_COUNT:-0}" -gt 0 ]];
152152

153153
if BUILD_JSON=$(curl --max-time 30 -H "Authorization: Bearer $BUILDKITE_API_TOKEN" -X GET "https://api.buildkite.com/v2/organizations/elastic/pipelines/${BUILDKITE_PIPELINE_SLUG}/builds/${BUILDKITE_BUILD_NUMBER}?include_retried_jobs=true" 2>/dev/null); then
154154
if ORIGIN_JOB_ID=$(printf '%s\n' "$BUILD_JSON" | jq -r --arg jobId "$BUILDKITE_JOB_ID" ' .jobs[] | select(.id == $jobId) | .retry_source.job_id' 2>/dev/null) && [ "$ORIGIN_JOB_ID" != "null" ] && [ -n "$ORIGIN_JOB_ID" ]; then
155-
155+
156156
# Attempt to retrieve build scan ID directly from metadata
157157
BUILD_SCAN_ID=$(printf '%s\n' "$BUILD_JSON" | jq -r --arg job_id "$ORIGIN_JOB_ID" '.meta_data["build-scan-id-" + $job_id]' 2>/dev/null)
158158

@@ -171,6 +171,53 @@ if [[ "${SMART_RETRIES:-}" == "true" && "${BUILDKITE_RETRY_COUNT:-0}" -gt 0 ]];
171171
DEVELOCITY_BASE_URL="${DEVELOCITY_BASE_URL:-https://gradle-enterprise.elastic.co}"
172172
DEVELOCITY_FAILED_TEST_API_URL="${DEVELOCITY_BASE_URL}/api/tests/build/${BUILD_SCAN_ID}?testOutcomes=failed"
173173

174+
# Fetch test seed from build scan custom values
175+
# Support both DEVELOCITY_API_KEY and DEVELOCITY_API_ACCESS_KEY
176+
API_KEY="${DEVELOCITY_API_KEY:-$DEVELOCITY_API_ACCESS_KEY}"
177+
178+
if [[ -z "$API_KEY" ]]; then
179+
echo "Warning: No Develocity API key available (DEVELOCITY_API_KEY or DEVELOCITY_API_ACCESS_KEY)"
180+
echo "Test seed retrieval will be skipped"
181+
else
182+
DEVELOCITY_BUILD_SCAN_API_URL="${DEVELOCITY_BASE_URL}/api/builds/${BUILD_SCAN_ID}?models=gradle-attributes"
183+
TESTS_SEED=""
184+
185+
echo "Fetching test seed from build scan: $BUILD_SCAN_ID"
186+
echo "API URL: $DEVELOCITY_BUILD_SCAN_API_URL"
187+
188+
if BUILD_SCAN_DATA=$(curl --silent --show-error --compressed --request GET \
189+
--url "$DEVELOCITY_BUILD_SCAN_API_URL" \
190+
--max-time 30 \
191+
--header 'accept: application/json' \
192+
--header "authorization: Bearer $API_KEY" \
193+
--header 'content-type: application/json' 2>&1); then
194+
195+
# Check if we got valid JSON
196+
if echo "$BUILD_SCAN_DATA" | jq empty 2>/dev/null; then
197+
# Extract test seed from gradle attributes
198+
TESTS_SEED=$(printf '%s\n' "$BUILD_SCAN_DATA" | jq -r '.models.gradleAttributes.model.values[]? | select(.name == "tests.seed") | .value' 2>/dev/null)
199+
200+
if [[ -z "$TESTS_SEED" ]] || [[ "$TESTS_SEED" == "null" ]]; then
201+
echo "Could not retrieve test seed from build scan"
202+
echo "Debug: Checking available gradle attributes..."
203+
printf '%s\n' "$BUILD_SCAN_DATA" | jq -r '.models.gradleAttributes.model.values[]? | .name' 2>/dev/null || echo "No gradle attributes found"
204+
TESTS_SEED=""
205+
else
206+
echo "Retrieved test seed: $TESTS_SEED"
207+
export TESTS_SEED
208+
fi
209+
else
210+
echo "Error: Invalid JSON response from Develocity API"
211+
echo "Response preview: ${BUILD_SCAN_DATA:0:200}"
212+
TESTS_SEED=""
213+
fi
214+
else
215+
echo "Error: Failed to fetch build scan data from Develocity API"
216+
echo "Curl output: ${BUILD_SCAN_DATA:0:200}"
217+
TESTS_SEED=""
218+
fi
219+
fi
220+
174221
# Add random delay to prevent API rate limiting from parallel retries
175222
sleep $((RANDOM % 5))
176223

@@ -180,7 +227,7 @@ if [[ "${SMART_RETRIES:-}" == "true" && "${BUILDKITE_RETRY_COUNT:-0}" -gt 0 ]];
180227
--max-time 30 \
181228
--header 'accept: application/json' \
182229
--header "authorization: Bearer $DEVELOCITY_API_ACCESS_KEY" \
183-
--header 'content-type: application/json' 2>/dev/null | jq '.' &> .failed-test-history.json; then
230+
--header 'content-type: application/json' 2>/dev/null | jq --arg testseed "$TESTS_SEED" '. + {testseed: $testseed}' &> .failed-test-history.json; then
184231

185232
# Set secure file permissions
186233
chmod 600 .failed-test-history.json
@@ -196,7 +243,7 @@ if [[ "${SMART_RETRIES:-}" == "true" && "${BUILDKITE_RETRY_COUNT:-0}" -gt 0 ]];
196243
ORIGIN_JOB_NAME="previous attempt"
197244
fi
198245

199-
echo "Smart retry enabled: filtering to $FILTERED_WORK_UNITS work units"
246+
echo "Smart retry enabled: filtering to $FILTERED_WORK_UNITS work units"
200247

201248
# Create Buildkite annotation for visibility
202249
# Use unique context per job to support multiple retries

.buildkite/hooks/pre-command.bat

Lines changed: 62 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,70 @@ if "%SMART_RETRIES%"=="true" (
6767
if not defined DEVELOCITY_BASE_URL set DEVELOCITY_BASE_URL=https://gradle-enterprise.elastic.co
6868
set DEVELOCITY_FAILED_TEST_API_URL=!DEVELOCITY_BASE_URL!/api/tests/build/!BUILD_SCAN_ID!?testOutcomes=failed
6969

70+
REM Fetch test seed from build scan custom values
71+
REM Support both DEVELOCITY_API_KEY and DEVELOCITY_API_ACCESS_KEY
72+
set API_KEY=
73+
if defined DEVELOCITY_API_KEY (
74+
set API_KEY=%DEVELOCITY_API_KEY%
75+
) else if defined DEVELOCITY_API_ACCESS_KEY (
76+
set API_KEY=%DEVELOCITY_API_ACCESS_KEY%
77+
)
78+
79+
if not defined API_KEY (
80+
echo Warning: No Develocity API key available ^(DEVELOCITY_API_KEY or DEVELOCITY_API_ACCESS_KEY^)
81+
echo Test seed retrieval will be skipped
82+
set TESTS_SEED=
83+
) else (
84+
set DEVELOCITY_BUILD_SCAN_API_URL=!DEVELOCITY_BASE_URL!/api/builds/!BUILD_SCAN_ID!?models=gradle-attributes
85+
set TESTS_SEED=
86+
87+
echo Fetching test seed from build scan: !BUILD_SCAN_ID!
88+
echo API URL: !DEVELOCITY_BUILD_SCAN_API_URL!
89+
90+
REM Fetch build scan data
91+
curl --silent --show-error --compressed --request GET --url "!DEVELOCITY_BUILD_SCAN_API_URL!" --max-time 30 --header "accept: application/json" --header "authorization: Bearer !API_KEY!" --header "content-type: application/json" 2>nul | jq "." > .build-scan-data.json 2>nul
92+
93+
if exist .build-scan-data.json (
94+
REM Validate JSON
95+
jq empty .build-scan-data.json 2>nul
96+
if !errorlevel! equ 0 (
97+
REM Extract test seed from gradle attributes
98+
for /f "delims=" %%i in ('jq -r ".models.gradleAttributes.model.values[]? | select(.name == \"tests.seed\") | .value" .build-scan-data.json 2^>nul') do set TESTS_SEED=%%i
99+
100+
if defined TESTS_SEED (
101+
if not "!TESTS_SEED!"=="null" (
102+
echo Retrieved test seed: !TESTS_SEED!
103+
) else (
104+
echo Could not retrieve test seed from build scan
105+
echo Debug: Checking available gradle attributes...
106+
jq -r ".models.gradleAttributes.model.values[]? | .name" .build-scan-data.json 2>nul
107+
set TESTS_SEED=
108+
)
109+
) else (
110+
echo Could not retrieve test seed from build scan
111+
echo Debug: Checking available gradle attributes...
112+
jq -r ".models.gradleAttributes.model.values[]? | .name" .build-scan-data.json 2>nul
113+
set TESTS_SEED=
114+
)
115+
) else (
116+
echo Error: Invalid JSON response from Develocity API
117+
type .build-scan-data.json 2>nul | findstr /C:"^" | more +0 +10
118+
set TESTS_SEED=
119+
)
120+
121+
del .build-scan-data.json 2>nul
122+
) else (
123+
echo Error: Failed to fetch build scan data from Develocity API
124+
set TESTS_SEED=
125+
)
126+
)
127+
70128
REM Add random delay to prevent API rate limiting (0-4 seconds)
71129
set /a "delay=%RANDOM% %% 5"
72130
timeout /t !delay! /nobreak >nul 2>&1
73131

74132
REM Fetch failed tests from Develocity API (curl will auto-decompress gzip with --compressed)
75-
curl --compressed --request GET --url "!DEVELOCITY_FAILED_TEST_API_URL!" --max-filesize 10485760 --max-time 30 --header "accept: application/json" --header "authorization: Bearer %DEVELOCITY_API_ACCESS_KEY%" --header "content-type: application/json" 2>nul | jq "." > .failed-test-history.json 2>nul
133+
curl --compressed --request GET --url "!DEVELOCITY_FAILED_TEST_API_URL!" --max-filesize 10485760 --max-time 30 --header "accept: application/json" --header "authorization: Bearer %DEVELOCITY_API_ACCESS_KEY%" --header "content-type: application/json" 2>nul | jq --arg testseed "!TESTS_SEED!" ". + {testseed: $testseed}" > .failed-test-history.json 2>nul
76134

77135
if exist .failed-test-history.json (
78136
REM Set restrictive file permissions (owner only)
@@ -90,7 +148,7 @@ if "%SMART_RETRIES%"=="true" (
90148
if not defined ORIGIN_JOB_NAME set ORIGIN_JOB_NAME=previous attempt
91149
if "!ORIGIN_JOB_NAME!"=="null" set ORIGIN_JOB_NAME=previous attempt
92150

93-
echo Smart retry enabled: filtering to !FILTERED_WORK_UNITS! work units
151+
echo Smart retry enabled: filtering to !FILTERED_WORK_UNITS! work units
94152

95153
REM Create Buildkite annotation for visibility
96154
echo Rerunning failed build job [!ORIGIN_JOB_NAME!]^(!BUILD_SCAN_URL!^) > .smart-retry-annotation.txt
@@ -173,10 +231,11 @@ set "_DEVELOCITY_API_ACCESS_KEY=%DEVELOCITY_API_ACCESS_KEY%"
173231
set "_BUILDKITE_API_TOKEN=%BUILDKITE_API_TOKEN%"
174232
set "_JAVA_HOME=%JAVA_HOME%"
175233
set "_JAVA16_HOME=%JAVA16_HOME%"
234+
set "_TESTS_SEED=%TESTS_SEED%"
176235

177236
REM End local scope and restore critical variables to parent environment
178237
REM This ensures bash scripts can access WORKSPACE, GRADLEW, and other variables
179-
ENDLOCAL && set "WORKSPACE=%_WORKSPACE%" && set "GRADLEW=%_GRADLEW%" && set "GRADLEW_BAT=%_GRADLEW_BAT%" && set "BUILD_NUMBER=%_BUILD_NUMBER%" && set "JOB_BRANCH=%_JOB_BRANCH%" && set "GH_TOKEN=%_GH_TOKEN%" && set "GRADLE_BUILD_CACHE_USERNAME=%_GRADLE_BUILD_CACHE_USERNAME%" && set "GRADLE_BUILD_CACHE_PASSWORD=%_GRADLE_BUILD_CACHE_PASSWORD%" && set "DEVELOCITY_ACCESS_KEY=%_DEVELOCITY_ACCESS_KEY%" && set "DEVELOCITY_API_ACCESS_KEY=%_DEVELOCITY_API_ACCESS_KEY%" && set "BUILDKITE_API_TOKEN=%_BUILDKITE_API_TOKEN%" && set "JAVA_HOME=%_JAVA_HOME%" && set "JAVA16_HOME=%_JAVA16_HOME%"
238+
ENDLOCAL && set "WORKSPACE=%_WORKSPACE%" && set "GRADLEW=%_GRADLEW%" && set "GRADLEW_BAT=%_GRADLEW_BAT%" && set "BUILD_NUMBER=%_BUILD_NUMBER%" && set "JOB_BRANCH=%_JOB_BRANCH%" && set "GH_TOKEN=%_GH_TOKEN%" && set "GRADLE_BUILD_CACHE_USERNAME=%_GRADLE_BUILD_CACHE_USERNAME%" && set "GRADLE_BUILD_CACHE_PASSWORD=%_GRADLE_BUILD_CACHE_PASSWORD%" && set "DEVELOCITY_ACCESS_KEY=%_DEVELOCITY_ACCESS_KEY%" && set "DEVELOCITY_API_ACCESS_KEY=%_DEVELOCITY_API_ACCESS_KEY%" && set "BUILDKITE_API_TOKEN=%_BUILDKITE_API_TOKEN%" && set "JAVA_HOME=%_JAVA_HOME%" && set "JAVA16_HOME=%_JAVA16_HOME%" && set "TESTS_SEED=%_TESTS_SEED%"
180239

181240
bash.exe -c "bash .buildkite/scripts/get-latest-test-mutes.sh"
182241

.buildkite/pipelines/periodic-java-ea.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,8 @@ steps:
404404
- signal_reason: agent_stop
405405
limit: 3
406406

407-
- label: 9.1.11 / bwc
408-
command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true v9.1.11#bwcTest
407+
- label: 9.1.10 / bwc
408+
command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true v9.1.10#bwcTest
409409
timeout_in_minutes: 300
410410
agents:
411411
provider: gcp
@@ -414,7 +414,7 @@ steps:
414414
buildDirectory: /dev/shm/bk
415415
preemptible: true
416416
env:
417-
BWC_VERSION: 9.1.11
417+
BWC_VERSION: 9.1.10
418418
retry:
419419
automatic:
420420
- exit_status: "-1"

.buildkite/pipelines/periodic-packaging.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,8 @@ steps:
368368
env:
369369
BWC_VERSION: 9.0.8
370370

371-
- label: "{{matrix.image}} / 9.1.11 / packaging-tests-upgrade"
372-
command: ./.ci/scripts/packaging-test.sh -Dbwc.checkout.align=true destructiveDistroUpgradeTest.v9.1.11
371+
- label: "{{matrix.image}} / 9.1.10 / packaging-tests-upgrade"
372+
command: ./.ci/scripts/packaging-test.sh -Dbwc.checkout.align=true destructiveDistroUpgradeTest.v9.1.10
373373
timeout_in_minutes: 300
374374
matrix:
375375
setup:
@@ -382,7 +382,7 @@ steps:
382382
machineType: custom-16-32768
383383
buildDirectory: /dev/shm/bk
384384
env:
385-
BWC_VERSION: 9.1.11
385+
BWC_VERSION: 9.1.10
386386

387387
- label: "{{matrix.image}} / 9.2.6 / packaging-tests-upgrade"
388388
command: ./.ci/scripts/packaging-test.sh -Dbwc.checkout.align=true destructiveDistroUpgradeTest.v9.2.6

.buildkite/pipelines/periodic.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -457,8 +457,8 @@ steps:
457457
- exit_status: "1"
458458
limit: 1
459459

460-
- label: 9.1.11 / bwc
461-
command: .ci/scripts/run-gradle.sh --continue -Dbwc.checkout.align=true v9.1.11#bwcTest
460+
- label: 9.1.10 / bwc
461+
command: .ci/scripts/run-gradle.sh --continue -Dbwc.checkout.align=true v9.1.10#bwcTest
462462
timeout_in_minutes: 300
463463
agents:
464464
provider: gcp
@@ -467,7 +467,7 @@ steps:
467467
buildDirectory: /dev/shm/bk
468468
preemptible: true
469469
env:
470-
BWC_VERSION: 9.1.11
470+
BWC_VERSION: 9.1.10
471471
retry:
472472
automatic:
473473
- exit_status: "-1"

.ci/bwcVersions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ BWC_VERSION:
2020
- "8.18.8"
2121
- "8.19.12"
2222
- "9.0.8"
23-
- "9.1.11"
23+
- "9.1.10"
2424
- "9.2.6"
2525
- "9.3.0"
2626
- "9.4.0"

.ci/packer_cache.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ for branch in "${branches[@]}"; do
4949
rm -rf checkout/$branch
5050
git clone --reference $(dirname "${SCRIPT}")/../.git https://github.com/elastic/elasticsearch.git --branch ${branch} --single-branch checkout/${branch}
5151
export JAVA_HOME="${HOME}"/.java/${ES_BUILD_JAVA}
52-
./checkout/${branch}/gradlew --project-dir ./checkout/${branch} --parallel clean -s resolveAllDependencies -Dorg.gradle.warning.mode=none
52+
./checkout/${branch}/gradlew --project-dir ./checkout/${branch} --parallel clean -s resolveAllDependencies -Dbwc.throttle.maxParallelUsages=1 -Dorg.gradle.warning.mode=none
5353
rm -rf ./checkout/${branch}
5454
done

.ci/scripts/packaging-test.ps1

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ Remove-Item -Recurse -Force \tmp -ErrorAction Ignore
2727
New-Item -ItemType directory -Path \tmp
2828

2929
$ErrorActionPreference="Continue"
30-
& .\gradlew.bat -g "$env:USERPROFILE\.gradle" --parallel --no-daemon --scan --console=plain $GradleTasks
30+
31+
# Pass TESTS_SEED as Java system property if available
32+
$TestsSeedParam = ""
33+
if ($env:TESTS_SEED) {
34+
$TestsSeedParam = "-Dtests.seed=$env:TESTS_SEED"
35+
Write-Output "Using test seed: $env:TESTS_SEED"
36+
}
37+
38+
if ($TestsSeedParam) {
39+
& .\gradlew.bat -g "$env:USERPROFILE\.gradle" --parallel --no-daemon --scan --console=plain $TestsSeedParam $GradleTasks
40+
} else {
41+
& .\gradlew.bat -g "$env:USERPROFILE\.gradle" --parallel --no-daemon --scan --console=plain $GradleTasks
42+
}
3143

3244
exit $LastExitCode

.ci/scripts/packaging-test.sh

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,19 @@ git config --global --add safe.directory $WORKSPACE
7777
# sudo sets it's own PATH thus we use env to override that and call sudo annother time so we keep the secure root PATH
7878
# run with --continue to run both bats and java tests even if one fails
7979
# be explicit about Gradle home dir so we use the same even with sudo
80+
81+
# Pass TESTS_SEED as Java system property if available
82+
TESTS_SEED_PARAM=""
83+
if [[ -n "${TESTS_SEED:-}" ]]; then
84+
TESTS_SEED_PARAM="-Dtests.seed=$TESTS_SEED"
85+
echo "Using test seed: $TESTS_SEED"
86+
fi
87+
8088
sudo -E env \
8189
PATH=$BUILD_JAVA_HOME/bin:`sudo bash -c 'echo -n $PATH'` \
8290
--unset=ES_JAVA_HOME \
8391
--unset=JAVA_HOME \
8492
SYSTEM_JAVA_HOME=`readlink -f -n $BUILD_JAVA_HOME` \
8593
DOCKER_CONFIG="${HOME}/.docker" \
86-
./gradlew -g $HOME/.gradle --console=plain --scan --parallel --build-cache -Dorg.elasticsearch.build.cache.url=https://gradle-enterprise.elastic.co/cache/ --continue $@
94+
./gradlew -g $HOME/.gradle --console=plain --scan --parallel --build-cache -Dorg.elasticsearch.build.cache.url=https://gradle-enterprise.elastic.co/cache/ $TESTS_SEED_PARAM --continue $@
8795

.ci/scripts/run-gradle.sh

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,12 @@ else
4141
fi
4242

4343
set -e
44-
$GRADLEW -S --max-workers=$MAX_WORKERS "$@"
44+
45+
# Pass TESTS_SEED as Java system property if available
46+
TESTS_SEED_PARAM=""
47+
if [[ -n "${TESTS_SEED:-}" ]]; then
48+
TESTS_SEED_PARAM="-Dtests.seed=$TESTS_SEED"
49+
echo "Using test seed: $TESTS_SEED"
50+
fi
51+
52+
$GRADLEW -S --max-workers=$MAX_WORKERS $TESTS_SEED_PARAM "$@"

0 commit comments

Comments
 (0)