From 0f534d08d10f2cb20508384763e57a9d0588c209 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Fri, 7 Aug 2026 12:24:48 +0200 Subject: [PATCH 1/2] Fix GitHub status not updating after Buildkite retry Co-authored-by: Cursor --- .buildkite/build_pr_pipeline.yml | 20 ------------ .buildkite/hooks/pre-command | 4 +++ .buildkite/hooks/pre-exit | 11 +++++++ .buildkite/scripts/build_pr_commit_status.sh | 33 ++++++++++++++++++++ 4 files changed, 48 insertions(+), 20 deletions(-) create mode 100755 .buildkite/hooks/pre-exit create mode 100755 .buildkite/scripts/build_pr_commit_status.sh diff --git a/.buildkite/build_pr_pipeline.yml b/.buildkite/build_pr_pipeline.yml index 3df10f379e55e..e18b18c4b85bf 100644 --- a/.buildkite/build_pr_pipeline.yml +++ b/.buildkite/build_pr_pipeline.yml @@ -27,23 +27,3 @@ steps: image: family/docs-ubuntu-2204 diskSizeGb: 150 machineType: ${BUILD_MACHINE_TYPE} - - key: "teardown" - label: "teardown" - command: | - status_state=failure - if [ $$(buildkite-agent step get "outcome" --step "build-pr") == "passed" ]; then - status_state=success - fi - export status_state - curl -s -L \ - -X POST \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: Bearer $${VAULT_GITHUB_TOKEN}" \ - -H "X-GitHub-Api-Version: 2022-11-28" \ - "https://api.github.com/repos/${GITHUB_PR_BASE_OWNER}/${GITHUB_PR_BASE_REPO}/statuses/${GITHUB_PR_TRIGGERED_SHA}" \ - -d '{"state":"'$$status_state'","target_url":"'$BUILDKITE_BUILD_URL'","description":"Build finished","context":"buildkite/'$BUILDKITE_PIPELINE_SLUG'"}' - depends_on: - - step: "build-pr" - allow_failure: true - plugins: - - 'uber-workflow/run-without-clone': diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index f7be59739f3de..b1f382a402100 100755 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -39,3 +39,7 @@ elif [[ "$BUILDKITE_PIPELINE_SLUG" == "docs-build-air-gapped" ]] && [[ "$BUILDKI export DOCKER_USERNAME=$(retry 5 vault kv get -field=username secret/ci/elastic-docs/docker.elastic.co) export DOCKER_PASSWORD=$(retry 5 vault kv get -field=password secret/ci/elastic-docs/docker.elastic.co) fi + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "docs-build-pr" ]] && [[ "$BUILDKITE_STEP_KEY" == "build-pr" ]]; then + .buildkite/scripts/build_pr_commit_status.sh pending || true +fi diff --git a/.buildkite/hooks/pre-exit b/.buildkite/hooks/pre-exit new file mode 100755 index 0000000000000..e8b7cb25201ca --- /dev/null +++ b/.buildkite/hooks/pre-exit @@ -0,0 +1,11 @@ +#!/bin/bash + +set -euo pipefail + +if [[ "$BUILDKITE_PIPELINE_SLUG" == "docs-build-pr" ]] && [[ "$BUILDKITE_STEP_KEY" == "build-pr" ]]; then + status_state=failure + if [[ "${BUILDKITE_COMMAND_EXIT_STATUS:-1}" -eq 0 ]]; then + status_state=success + fi + .buildkite/scripts/build_pr_commit_status.sh "$status_state" || true +fi diff --git a/.buildkite/scripts/build_pr_commit_status.sh b/.buildkite/scripts/build_pr_commit_status.sh new file mode 100755 index 0000000000000..619d1166bde4c --- /dev/null +++ b/.buildkite/scripts/build_pr_commit_status.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# This script should only be invoked for builds triggered by the Buildkite PR bot +if [ -z ${GITHUB_PR_BASE_OWNER+set} ] || [ -z ${GITHUB_PR_BASE_REPO+set} ] || [ -z ${GITHUB_PR_TRIGGERED_SHA+set} ]; then + exit 0 +fi + +status_state=$1 +description='' + +case $status_state in + pending) + description='Build started';; + success|failure|error) + description='Build finished';; + *) + echo "Invalid state $status_state" + exit 1;; +esac + +githubPublishStatus="https://api.github.com/repos/${GITHUB_PR_BASE_OWNER}/${GITHUB_PR_BASE_REPO}/statuses/${GITHUB_PR_TRIGGERED_SHA}" +data='{"state":"'$status_state'","target_url":"'$BUILDKITE_BUILD_URL'","description":"'$description'","context":"buildkite/'$BUILDKITE_PIPELINE_SLUG'"}' + +echo "Setting commit status: buildkite/${BUILDKITE_PIPELINE_SLUG} - ${status_state}" +curl -s -L \ + -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${VAULT_GITHUB_TOKEN}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "${githubPublishStatus}" \ + -d "${data}" From 4dfa197b1637d1fc2c76adcc2de7db34c1fee4c5 Mon Sep 17 00:00:00 2001 From: Jan Calanog Date: Fri, 7 Aug 2026 12:28:50 +0200 Subject: [PATCH 2/2] Use absolute path for commit status script in hooks Co-authored-by: Cursor --- .buildkite/hooks/pre-command | 2 +- .buildkite/hooks/pre-exit | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index b1f382a402100..5636eaa753ede 100755 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -41,5 +41,5 @@ elif [[ "$BUILDKITE_PIPELINE_SLUG" == "docs-build-air-gapped" ]] && [[ "$BUILDKI fi if [[ "$BUILDKITE_PIPELINE_SLUG" == "docs-build-pr" ]] && [[ "$BUILDKITE_STEP_KEY" == "build-pr" ]]; then - .buildkite/scripts/build_pr_commit_status.sh pending || true + "${BUILDKITE_BUILD_CHECKOUT_PATH}/.buildkite/scripts/build_pr_commit_status.sh" pending || true fi diff --git a/.buildkite/hooks/pre-exit b/.buildkite/hooks/pre-exit index e8b7cb25201ca..0f784b64dee21 100755 --- a/.buildkite/hooks/pre-exit +++ b/.buildkite/hooks/pre-exit @@ -7,5 +7,5 @@ if [[ "$BUILDKITE_PIPELINE_SLUG" == "docs-build-pr" ]] && [[ "$BUILDKITE_STEP_KE if [[ "${BUILDKITE_COMMAND_EXIT_STATUS:-1}" -eq 0 ]]; then status_state=success fi - .buildkite/scripts/build_pr_commit_status.sh "$status_state" || true + "${BUILDKITE_BUILD_CHECKOUT_PATH}/.buildkite/scripts/build_pr_commit_status.sh" "$status_state" || true fi