diff --git a/.buildkite/build_pr_pipeline.yml b/.buildkite/build_pr_pipeline.yml index 337c7f4f42aa6..e076d526e2885 100644 --- a/.buildkite/build_pr_pipeline.yml +++ b/.buildkite/build_pr_pipeline.yml @@ -27,23 +27,3 @@ steps: image: family/docs-ubuntu-2204 diskSizeGb: 200 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..5636eaa753ede 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_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 new file mode 100755 index 0000000000000..0f784b64dee21 --- /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_BUILD_CHECKOUT_PATH}/.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}"