]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Automatically adjust MR metadata after merge
authorPetr Špaček <pspacek@isc.org>
Mon, 5 Aug 2024 08:21:46 +0000 (10:21 +0200)
committerPetr Špaček <pspacek@isc.org>
Fri, 23 Aug 2024 08:52:52 +0000 (10:52 +0200)
1. Set milestone to 'Not released yet' after merge
   We will set milestone to actual version number when we actually tag a
   particular version. This will get rid of mass MR reassignment when we
   do last minute changes to a release plan etc.

2. Adjust No CHANGES and Release Notes MR labels to match gitchangelog
   workflow.

(cherry picked from commit 3165261ecd7468c5f30eec0f50b4b43e556b7194)
(cherry picked from commit d1c64d588b5d2b293d6b4a366372c61043caba30)
(cherry picked from commit 1258078e8a111c9b61634bf3362b312c1a0ede3c)

.gitlab-ci.yml

index ac59eda1578512d7f6b894c2d5ba7fddceeed682..8f2721c5d11577327b3f00684ab42508311346f9 100644 (file)
@@ -54,6 +54,7 @@ stages:
   - docs
   - push
   - postcheck
+  - postmerge
   - release
 
 ### Runner Tag Templates
@@ -949,3 +950,37 @@ abi-check:
   only:
     - main@isc-projects/bind9
     - /^v9_[1-9][0-9]$/@isc-projects/bind9
+
+.post_merge_template: &post_merge
+  <<: *base_image
+  stage: postmerge
+  needs: []
+  # post-merge processes should run even if another MR was merged while the job was running (or queued)
+  interruptible: false
+  variables:
+    # automated commits will inherit identification from the user who pressed Merge button
+    GIT_COMMITTER_NAME: $GITLAB_USER_NAME
+    GIT_COMMITTER_EMAIL: $GITLAB_USER_EMAIL
+    # avoid leftover branches from previous jobs
+    GIT_STRATEGY: clone
+    # assumed max depth of a MR for backport or a rebased force-push
+    GIT_DEPTH: 1000
+  before_script:
+    # force-pushes should not trigger process automation (happens only in -sub branches)
+    - >
+      echo "previous branch tip: $CI_COMMIT_BEFORE_SHA"
+    - set +o pipefail; git log --format='%H' | grep --silent "$CI_COMMIT_BEFORE_SHA" && PREVIOUS_TIP_REACHABLE=1
+    - test "$PREVIOUS_TIP_REACHABLE" != "1" && echo "force-push detected, stop" && exit 1
+    # non-fast-forward merges are disabled so we have to have merge commit on top
+    - MERGE_REQUEST_ID="$(git log -1 --format='%b' | sed --silent -e 's/^See merge request [^!]\+!//p')"
+    - >
+      : stop if this is not a merge request
+    - test "$MERGE_REQUEST_ID" -ge 0
+    - git clone --depth 1 https://gitlab.isc.org/isc-projects/bind9-qa.git
+
+merged-metadata:
+  <<: *post_merge
+  rules:
+    - if: '$CI_PIPELINE_SOURCE == "push" && ($CI_COMMIT_REF_NAME =~ /^bind-9.[0-9]+(-sub)?$/ || $CI_COMMIT_REF_NAME =~ /^bind-9.[0-9]+.[0-9]+-release$/ || $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH)'
+  script:
+    - bind9-qa/releng/after_merge.py "$CI_PROJECT_ID" "$MERGE_REQUEST_ID"