cherrypick docs to latest release branch (#8719)
This commit is contained in:
parent
fbf01fca67
commit
6b05ecf488
|
@ -16,6 +16,24 @@ function status {
|
||||||
tput sgr0
|
tput sgr0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Returns the latest GitHub "backport/*" label
|
||||||
|
function get_latest_backport_label {
|
||||||
|
local resp
|
||||||
|
local ret
|
||||||
|
local latest_backport_label
|
||||||
|
|
||||||
|
resp=$(curl -f -s -H "Authorization: token ${GITHUB_TOKEN}" "https://api.github.com/repos/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/labels")
|
||||||
|
ret="$?"
|
||||||
|
if [[ "$ret" -ne 0 ]]; then
|
||||||
|
status "The GitHub API returned $ret which means it was probably rate limited."
|
||||||
|
exit $ret
|
||||||
|
fi
|
||||||
|
|
||||||
|
latest_backport_label=$(echo "$resp" | jq -r '.[] | select(.name | startswith("backport/")) | .name' | sort -rV | head -n1)
|
||||||
|
echo"$latest_backport_label"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# This function will do the cherry-picking of a commit on a branch
|
# This function will do the cherry-picking of a commit on a branch
|
||||||
# Exit 1 if cherry-picking fails
|
# Exit 1 if cherry-picking fails
|
||||||
function cherry_pick_with_slack_notification {
|
function cherry_pick_with_slack_notification {
|
||||||
|
@ -110,10 +128,13 @@ if [[ "$count" -eq 0 ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# save PR number
|
||||||
|
pr_number=$(echo "$resp" | jq '.items[].number')
|
||||||
|
|
||||||
# If the API returned a non-zero count, we have found a PR with that commit so we find
|
# If the API returned a non-zero count, we have found a PR with that commit so we find
|
||||||
# the labels from the PR
|
# the labels from the PR
|
||||||
|
|
||||||
# sorts the labels from a PR via version sort
|
# Sorts the labels from a PR via version sort
|
||||||
labels=$(echo "$resp" | jq --raw-output '.items[].labels[] | .name' | sort -rV)
|
labels=$(echo "$resp" | jq --raw-output '.items[].labels[] | .name' | sort -rV)
|
||||||
ret="$?"
|
ret="$?"
|
||||||
pr_url=$(echo "$resp" | jq --raw-output '.items[].pull_request.html_url')
|
pr_url=$(echo "$resp" | jq --raw-output '.items[].pull_request.html_url')
|
||||||
|
@ -124,6 +145,18 @@ if [[ "$ret" -ne 0 ]]; then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Attach label for latest release branch if 'docs-cherrypick' is present. Will noop if already applied.
|
||||||
|
latest_backport_label=$(get_latest_backport_label)
|
||||||
|
status "latest backport label is $latest_backport_label"
|
||||||
|
if echo "$resp" | jq -e '.items[].labels[] | select(.name | contains("docs-cherrypick"))'; then
|
||||||
|
labels=$(curl -f -s -H "Authorization: token ${GITHUB_TOKEN}" -X POST -d "{\"labels\":[\"$latest_backport_label\"]}" "https://api.github.com/repos/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/issues/${pr_number}/labels" | jq --raw-output '.[].name' | sort -rV)
|
||||||
|
ret="$?"
|
||||||
|
if [[ "$ret" -ne 0 ]]; then
|
||||||
|
status "Error applying $latest_backport_label to $pr_url"
|
||||||
|
exit $ret
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
backport_failures=0
|
backport_failures=0
|
||||||
# loop through all labels on the PR
|
# loop through all labels on the PR
|
||||||
for label in $labels; do
|
for label in $labels; do
|
||||||
|
|
Loading…
Reference in New Issue