mirror of
https://github.com/vmware-tanzu/velero.git
synced 2026-09-13 11:34:54 +00:00
The changelog check decided whether a PR was exempt using the labels in the triggering event payload (github.event.pull_request.labels). That payload is frozen at event time, so a PR that gets the kind/changelog-not-required label after its first run could not pass by re-running the failed job, and the exemption only took effect if a brand new event happened to fire afterward. Move the exemption logic into hack/changelog-check.sh and query the PR's current labels via the GitHub API instead. Re-runs and labels added after the initial run are now evaluated correctly. The workflow grants pull-requests: read and passes github.token so the script can read labels. The exempt label set (kind/changelog-not-required, Design, Website, Documentation) is unchanged. Signed-off-by: Shubham Pampattiwar <spampatt@redhat.com>
57 lines
2.0 KiB
Bash
Executable File
57 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2020 the Velero contributors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
|
|
set +x
|
|
|
|
if [[ -z "$CI" ]]; then
|
|
echo "This script is intended to be run only on Github Actions." >&2
|
|
exit 1
|
|
fi
|
|
|
|
CHANGELOG_PATH='changelogs/unreleased'
|
|
|
|
# https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request
|
|
# GITHUB_REF is something like "refs/pull/:prNumber/merge"
|
|
pr_number=$(echo $GITHUB_REF | cut -d / -f 3)
|
|
|
|
# Some kinds of pull requests do not require a changelog entry. Rather than
|
|
# relying on the (frozen) event payload, query the PR's current labels so the
|
|
# check reflects the latest state. This makes re-runs and labels added after
|
|
# the initial run behave correctly.
|
|
EXEMPT_LABELS=("kind/changelog-not-required" "Design" "Website" "Documentation")
|
|
|
|
if command -v gh > /dev/null 2>&1; then
|
|
current_labels=$(gh api "repos/${GITHUB_REPOSITORY}/pulls/${pr_number}" --jq '.labels[].name' 2>/dev/null || true)
|
|
for label in "${EXEMPT_LABELS[@]}"; do
|
|
if grep -Fxq "$label" <<< "$current_labels"; then
|
|
echo "PR ${pr_number} has the '${label}' label; changelog not required."
|
|
exit 0
|
|
fi
|
|
done
|
|
fi
|
|
|
|
change_log_file="${CHANGELOG_PATH}/${pr_number}-*"
|
|
|
|
if ls ${change_log_file} 1> /dev/null 2>&1; then
|
|
echo "changelog for PR ${pr_number} exists"
|
|
exit 0
|
|
else
|
|
echo "PR ${pr_number} is missing a changelog. Please refer https://velero.io/docs/main/code-standards/#adding-a-changelog and add a changelog."
|
|
exit 1
|
|
fi
|
|
|