#!/usr/bin/env bash #===----------------------------------------------------------------------===## # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # #===----------------------------------------------------------------------===## # # This file generates a Buildkite pipeline that triggers the various CI jobs for # the LLVM project during pre-commit CI. # # See https://buildkite.com/docs/agent/v3/cli-pipeline#pipeline-format. # # As this outputs a yaml file, it's possible to log messages to stderr or # prefix with "#". set -eu set -o pipefail # Environment variables script works with: # Set by buildkite : ${BUILDKITE_PULL_REQUEST_BASE_BRANCH:=} : ${BUILDKITE_COMMIT:=} : ${BUILDKITE_BRANCH:=} # Fetch origin to have an up to date merge base for the diff. git fetch origin # List of files affected by this commit : ${MODIFIED_FILES:=$(git diff --name-only origin/${BUILDKITE_PULL_REQUEST_BASE_BRANCH}...HEAD)} # Filter rules for generic windows tests : ${WINDOWS_AGENTS:='{"queue": "windows"}'} # Filter rules for generic linux tests : ${LINUX_AGENTS:='{"queue": "linux"}'} reviewID="$(git log --format=%B -n 1 | sed -nE 's/^Review-ID:[[:space:]]*(.+)$/\1/p')" if [[ "${reviewID}" != "" ]]; then buildMessage="https://llvm.org/${reviewID}" else buildMessage="Push to branch ${BUILDKITE_BRANCH}" fi cat <&2 echo "$MODIFIED_FILES" >&2 modified_dirs=$(echo "$MODIFIED_FILES" | cut -d'/' -f1 | sort -u) echo "Directories modified:" >&2 echo "$modified_dirs" >&2 # Project specific pipelines. # If libc++ or one of the runtimes directories changed. if echo "$modified_dirs" | grep -q -E "^(libcxx|libcxxabi|libunwind|runtimes|cmake)$"; then cat <