Skip to content

Commit 4cc72f3

Browse files
committed
[ML] Use dynamic depends_on for analyze_build_failure step
Apply the same fix as PR elastic#3003 to the analyze_build_failure step: compute which build step keys will exist based on the platform config and pass them as ML_BUILD_STEP_KEYS for the shell script to use in its depends_on section. This prevents "Step dependencies not found" errors when not all platforms are built. Made-with: Cursor
1 parent f404519 commit 4cc72f3

4 files changed

Lines changed: 66 additions & 17 deletions

File tree

.buildkite/branch.json.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,21 @@ def main():
3030
".buildkite/pipelines/format_and_validation.yml.sh"))
3131
config = buildConfig.Config()
3232
config.parse()
33+
34+
build_step_keys = []
35+
if config.build_linux and config.build_aarch64:
36+
build_step_keys.append("build_test_linux-aarch64-RelWithDebInfo")
37+
if config.build_linux and config.build_x86_64:
38+
build_step_keys.append("build_test_linux-x86_64-RelWithDebInfo")
39+
if config.build_macos and config.build_aarch64:
40+
build_step_keys.append("build_test_macos-aarch64-RelWithDebInfo")
41+
if config.build_windows and config.build_x86_64:
42+
build_step_keys.append("build_test_Windows-x86_64-RelWithDebInfo")
43+
44+
env = {
45+
"ML_BUILD_STEP_KEYS": ",".join(build_step_keys),
46+
}
47+
3348
if config.build_windows:
3449
build_windows = pipeline_steps.generate_step_template("Windows", "build", "", config.build_x86_64)
3550
pipeline_steps.append(build_windows)
@@ -58,6 +73,7 @@ def main():
5873
pipeline_steps.append(pipeline_steps.generate_step("Upload daily releasable artifacts to GCS",
5974
".buildkite/pipelines/upload_dra_to_gcs.yml.sh"))
6075

76+
pipeline["env"] = env
6177
pipeline["steps"] = pipeline_steps
6278
print(json.dumps(pipeline, indent=2))
6379

.buildkite/job-build-test-all-debug.json.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@
2424
config as buildConfig,
2525
)
2626

27-
env = {
28-
"BUILD_SNAPSHOT": "true",
29-
"VERSION_QUALIFIER": ""
30-
}
31-
3227
def main():
3328
pipeline = {}
3429
pipeline_steps = step.PipelineStep([])
@@ -40,6 +35,23 @@ def main():
4035
".buildkite/pipelines/format_and_validation.yml.sh"))
4136
config = buildConfig.Config()
4237
config.parse()
38+
39+
build_step_keys = []
40+
if config.build_linux and config.build_aarch64:
41+
build_step_keys.append("build_test_linux-aarch64-RelWithDebInfo")
42+
if config.build_linux and config.build_x86_64:
43+
build_step_keys.append("build_test_linux-x86_64-RelWithDebInfo")
44+
if config.build_macos and config.build_aarch64:
45+
build_step_keys.append("build_test_macos-aarch64-RelWithDebInfo")
46+
if config.build_windows and config.build_x86_64:
47+
build_step_keys.append("build_test_Windows-x86_64-RelWithDebInfo")
48+
49+
env = {
50+
"BUILD_SNAPSHOT": "true",
51+
"VERSION_QUALIFIER": "",
52+
"ML_BUILD_STEP_KEYS": ",".join(build_step_keys),
53+
}
54+
4355
if config.build_windows:
4456
debug_windows = pipeline_steps.generate_step_template("Windows", "debug", "", config.build_x86_64)
4557
pipeline_steps.append(debug_windows)

.buildkite/pipeline.json.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@
2323
config as buildConfig,
2424
)
2525

26-
# Ensure VERSION_QUALIFIER is always empty for PR builds
27-
env = {
28-
"VERSION_QUALIFIER": ""
29-
}
30-
3126
def main():
3227
pipeline = {}
3328
pipeline_steps = step.PipelineStep([])
@@ -39,6 +34,24 @@ def main():
3934
".buildkite/pipelines/format_and_validation.yml.sh"))
4035
config = buildConfig.Config()
4136
config.parse()
37+
38+
# Compute which build step keys will exist so that analytics and
39+
# failure-analysis steps can emit a correct depends_on list.
40+
build_step_keys = []
41+
if config.build_linux and config.build_aarch64:
42+
build_step_keys.append("build_test_linux-aarch64-RelWithDebInfo")
43+
if config.build_linux and config.build_x86_64:
44+
build_step_keys.append("build_test_linux-x86_64-RelWithDebInfo")
45+
if config.build_macos and config.build_aarch64:
46+
build_step_keys.append("build_test_macos-aarch64-RelWithDebInfo")
47+
if config.build_windows and config.build_x86_64:
48+
build_step_keys.append("build_test_Windows-x86_64-RelWithDebInfo")
49+
50+
env = {
51+
"VERSION_QUALIFIER": "",
52+
"ML_BUILD_STEP_KEYS": ",".join(build_step_keys),
53+
}
54+
4255
if config.build_windows:
4356
build_windows = pipeline_steps.generate_step_template("Windows", config.action, "", config.build_x86_64)
4457
pipeline_steps.append(build_windows)

.buildkite/pipelines/analyze_build_failure.yml.sh

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,25 @@
88
# compliance with the Elastic License 2.0 and the foregoing additional
99
# limitation.
1010

11-
cat <<EOL
11+
cat <<'EOL'
1212
steps:
1313
- label: "Analyze build failure :mag:"
1414
key: "analyze_build_failure"
1515
command:
16-
- "python3 dev-tools/analyze_build_failure.py --pipeline \$BUILDKITE_PIPELINE_SLUG --build \$BUILDKITE_BUILD_NUMBER"
17-
depends_on:
18-
- "build_test_linux-aarch64-RelWithDebInfo"
19-
- "build_test_linux-x86_64-RelWithDebInfo"
20-
- "build_test_macos-aarch64-RelWithDebInfo"
21-
- "build_test_Windows-x86_64-RelWithDebInfo"
16+
- "python3 dev-tools/analyze_build_failure.py --pipeline $BUILDKITE_PIPELINE_SLUG --build $BUILDKITE_BUILD_NUMBER"
17+
EOL
18+
19+
# Emit depends_on dynamically — ML_BUILD_STEP_KEYS is a comma-separated
20+
# list of step keys set by the pipeline generator.
21+
if [ -n "${ML_BUILD_STEP_KEYS:-}" ]; then
22+
echo ' depends_on:'
23+
IFS=',' read -ra STEP_KEYS <<< "$ML_BUILD_STEP_KEYS"
24+
for key in "${STEP_KEYS[@]}"; do
25+
echo " - \"${key}\""
26+
done
27+
fi
28+
29+
cat <<'EOL'
2230
allow_dependency_failure: true
2331
if: "build.state == 'failed' || build.state == 'failing'"
2432
soft_fail: true

0 commit comments

Comments
 (0)