From 9a2f80b4b7a4f3cb045c0730a574d0a41562d451 Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Mon, 11 Jun 2018 12:58:31 +0100 Subject: [PATCH] Add script to get a list of failing pants from travis --- .../bin/get_failing_travis_targets_for_pr.sh | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 build-support/bin/get_failing_travis_targets_for_pr.sh diff --git a/build-support/bin/get_failing_travis_targets_for_pr.sh b/build-support/bin/get_failing_travis_targets_for_pr.sh new file mode 100755 index 00000000000..8e935bb8314 --- /dev/null +++ b/build-support/bin/get_failing_travis_targets_for_pr.sh @@ -0,0 +1,36 @@ +#!/bin/bash -e + +if [[ $# != 1 ]]; then + echo >&2 "Usage: $0 pull-request-number" + exit 1 +fi +pull=$1 + +mkdir -p logs/jobs + +curl=(curl -s -S -H 'Travis-API-Version: 3') + +"${curl[@]}" 'https://api.travis-ci.org/repo/pantsbuild%2Fpants/builds?event_type=pull_request&limit=100&sort_by=finished_at:desc' > logs/search +jobs="$(cat logs/search | jq "[ .builds[] | select(.pull_request_number == ${pull}) ][0] | .jobs[].id")" +targets=() +for job in ${jobs}; do + mkdir -p "logs/jobs/${job}" + "${curl[@]}" "https://api.travis-ci.org/job/${job}" >"logs/jobs/${job}/info" + state="$(cat logs/jobs/${job}/info | jq -r '.state')" + case "${state}" in + "passed") + continue + ;; + "failed") + "${curl[@]}" "https://api.travis-ci.org/job/${job}/log.txt" > "logs/jobs/${job}/txt" + targets=("${targets[@]}" $(cat -v "logs/jobs/${job}/txt" | awk '$2 == "....." && $3 ~ /^FAILURE/ {print $1}')) + ;; + *) + echo >&2 "Job ${job} state ${state}" + ;; + esac +done + +(for target in "${targets[@]}"; do + echo "${target}" +done | sort -u)