|
| 1 | +# |
| 2 | +# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one |
| 3 | +# or more contributor license agreements. Licensed under the "Elastic License |
| 4 | +# 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side |
| 5 | +# Public License v 1"; you may not use this file except in compliance with, at |
| 6 | +# your election, the "Elastic License 2.0", the "GNU Affero General Public |
| 7 | +# License v3.0 only", or the "Server Side Public License, v 1". |
| 8 | +# |
| 9 | + |
| 10 | +#!/bin/bash |
| 11 | + |
| 12 | +# Allow overriding the time window (in hours) to check for new builds, defaults to 24 |
| 13 | +RECENT_TIME_WINDOW=${RECENT_TIME_WINDOW:-24} |
| 14 | + |
| 15 | +# Extract current JDK major version from bundled_jdk in version.properties |
| 16 | +CURRENT_JDK=$(grep "^bundled_jdk =" build-tools-internal/version.properties | cut -d'=' -f2 | tr -d ' ' | cut -d'.' -f1) |
| 17 | +TARGET_JDK=$((CURRENT_JDK + 1)) |
| 18 | + |
| 19 | +echo "Current JDK major version: $CURRENT_JDK" |
| 20 | +echo "Target JDK major version: $TARGET_JDK" |
| 21 | + |
| 22 | +# Query Elasticsearch JDK archive for available JDKs |
| 23 | +JDK_ARCHIVE_URL="https://builds.es-jdk-archive.com/jdks/openjdk/recent.json" |
| 24 | +echo "Querying JDK archive: $JDK_ARCHIVE_URL" |
| 25 | + |
| 26 | +# Fetch JDK info and filter for target major version |
| 27 | +JDK_DATA=$(curl -s "$JDK_ARCHIVE_URL") |
| 28 | + |
| 29 | +if [[ -z "$JDK_DATA" ]]; then |
| 30 | + echo "Failed to fetch JDK data from archive" |
| 31 | + exit 1 |
| 32 | +fi |
| 33 | + |
| 34 | +# Find the latest build for the target JDK version |
| 35 | +LATEST_BUILD=$(echo "$JDK_DATA" | jq -r --arg target "$TARGET_JDK" ' |
| 36 | + .majors[$target].builds | |
| 37 | + sort_by(.archived_at) | |
| 38 | + last' |
| 39 | +) |
| 40 | + |
| 41 | +if [[ "$LATEST_BUILD" == "null" || -z "$LATEST_BUILD" ]]; then |
| 42 | + echo "No builds found for JDK $TARGET_JDK" |
| 43 | + exit 1 |
| 44 | +fi |
| 45 | + |
| 46 | +# Extract timestamp and JDK identifier |
| 47 | +TIMESTAMP=$(echo "$LATEST_BUILD" | jq -r '.archived_at') |
| 48 | +JDK_IDENTIFIER=$(echo "$LATEST_BUILD" | jq -r '.id') |
| 49 | + |
| 50 | +echo "Latest JDK ${TARGET_JDK} build from ES archive:" |
| 51 | +echo " Timestamp: $TIMESTAMP" |
| 52 | +echo " JDK Identifier: $JDK_IDENTIFIER" |
| 53 | + |
| 54 | +# Set variables for use in the pipeline trigger |
| 55 | +jdkbuild="$JDK_IDENTIFIER" |
| 56 | +jdk_timestamp="$TIMESTAMP" |
| 57 | + |
| 58 | +# Check if timestamp is within last 24 hours |
| 59 | +CURRENT_TIME=$(date +%s) |
| 60 | +BUILD_TIME=$(date -d "$TIMESTAMP" +%s 2>/dev/null || date -j -f "%Y-%m-%dT%H:%M:%S" "${TIMESTAMP%Z}" +%s 2>/dev/null || echo "0") |
| 61 | + |
| 62 | +if [[ "$BUILD_TIME" == "0" ]]; then |
| 63 | + echo "Failed to parse timestamp: $TIMESTAMP" |
| 64 | + SHOULD_TRIGGER="false" |
| 65 | +else |
| 66 | + TIME_DIFF=$((CURRENT_TIME - BUILD_TIME)) |
| 67 | + TIME_WINDOW=$((RECENT_TIME_WINDOW * 60 * 60)) |
| 68 | + |
| 69 | + if [[ $TIME_DIFF -lt $TIME_WINDOW ]]; then |
| 70 | + echo "Build is recent (less than ${RECENT_TIME_WINDOW}h old)" |
| 71 | + SHOULD_TRIGGER="true" |
| 72 | + else |
| 73 | + echo "Build is older than ${RECENT_TIME_WINDOW} hours" |
| 74 | + SHOULD_TRIGGER="false" |
| 75 | + fi |
| 76 | +fi |
| 77 | + |
| 78 | +echo "SHOULD_TRIGGER: $SHOULD_TRIGGER" |
| 79 | + |
| 80 | + |
| 81 | +if [[ "$SHOULD_TRIGGER" == "true" ]]; then |
| 82 | + EFFECTIVE_START_DATE=$(date -u -d "@$BUILD_TIME" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || date -u -r "$BUILD_TIME" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || echo "") |
| 83 | + echo "Triggering performance-esbench-jdk for new jdk build $JDK_IDENTIFIER" |
| 84 | + cat << EOF | buildkite-agent pipeline upload |
| 85 | +steps: |
| 86 | +- trigger: elasticsearch-performance-esbench-jdk |
| 87 | + label: Triggering performance-esbench-jdk for new jdk build $JDK_IDENTIFIER |
| 88 | + async: true |
| 89 | + build: |
| 90 | + branch: "$BUILDKITE_BRANCH" |
| 91 | + env: |
| 92 | + EFFECTIVE_START_DATE: "$EFFECTIVE_START_DATE" |
| 93 | + EXECUTION_MODE: "start-run" |
| 94 | +EOF |
| 95 | +fi |
0 commit comments