@@ -66,13 +66,14 @@ jobs:
6666 if [[ "${pr_label}" =~ ${backport_regex} ]]; then
6767 major="${BASH_REMATCH[1]}"
6868 minor="${BASH_REMATCH[2]}"
69- pr_majors+=("${major}")
7069 if [ "${minor}" != "x" ]; then
70+ pr_majors+=("${major}")
7171 has_exact_backport_label=true
7272 else
7373 pr_floating_majors+=("${major}")
7474 fi
7575 else
76+ # Matches 'skip-backport'
7677 has_exact_backport_label=true
7778 fi
7879
9091 exit 1
9192 fi
9293
94+ # Validate that a floating backport label exists for each exact backport label major
95+ # version.
96+
9397 has_floating_backport_labels=true
9498
9599 for pr_major in "${pr_majors[@]}"; do
@@ -121,3 +125,27 @@ jobs:
121125 if [ "${has_floating_backport_labels}" != true ]; then
122126 exit 1
123127 fi
128+
129+ # Validate that an exact backport label exists for each floating backport label major
130+ # version.
131+
132+ has_exact_backports_labels=true
133+
134+ for pr_floating_major in "${pr_floating_majors[@]}"; do
135+ exists_exact_major=false
136+ for pr_major in "${pr_majors[@]}"; do
137+ if [ "${pr_floating_major}" -eq "${pr_major}" ]; then
138+ has_exact_major=true
139+ fi
140+ done
141+
142+ if [ "${has_exact_major}" != true ]; then
143+ has_exact_backport_labels=false
144+ echo "::error::Missing exact backport label for '${pr_floating_major}.x'"
145+ fi
146+ done
147+
148+ if [ "${has_exact_backport_labels}" != true ]; then
149+ exit 1
150+ fi
151+
0 commit comments