From: Tom Krizek Date: Thu, 15 Dec 2022 16:48:34 +0000 (+0100) Subject: danger: check backport links to the original MR X-Git-Tag: v9.19.9~72^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12e0b05738cbd456c8c691fd96364b1ac8b6b259;p=thirdparty%2Fbind9.git danger: check backport links to the original MR When doing archeology, it is much easier to find stuff if it's properly linked. This check ensures that backport MR are linked to their original MR via a "Backport of !XXXX" message. The regular expression is fairly broad and has been tested to accept the following variants of the message: Backport of MR !XXXX Backport of: !XXXX backport of mr !XXXX Backport of !XXXX Backport of https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/XXXX --- diff --git a/dangerfile.py b/dangerfile.py index 365fe01a1c2..7f0797232c1 100644 --- a/dangerfile.py +++ b/dangerfile.py @@ -173,7 +173,13 @@ if not danger.gitlab.mr.milestone: # backporting preferences.) # # * The Backport MR doesn't have target branch in the merge request title. +# +# * The Backport MR doesn't link to the original MR is its description. +BACKPORT_OF_RE = re.compile( + r"Backport\s+of.*(merge_requests/|!)([0-9]+)", flags=re.IGNORECASE +) +backport_desc = BACKPORT_OF_RE.search(danger.gitlab.mr.description) version_labels = [l for l in mr_labels if l.startswith("v9.")] if is_backport: if len(version_labels) != 1: @@ -188,6 +194,11 @@ if is_backport: "Backport MRs must have their target branch in the " f"title. Please put `{mr_title_version}` in the MR title." ) + if backport_desc is None: + fail( + "Backport MRs must link to the original MR. Please put " + "`Backport of MR !XXXX` in the MR description." + ) if not is_backport and not version_labels: fail( "If this merge request is a backport, set the *Backport* label and "