[glib: 3/4] ci: Fix running all jobs on merge requests



commit 2daebc767415adc4cf2d2a391e17b75cc1590303
Author: Philip Withnall <withnall endlessm com>
Date:   Wed Nov 27 11:07:23 2019 +0000

    ci: Fix running all jobs on merge requests
    
    Since we added `only: [merge_requests]` for the `style-check-diff` job,
    that started running detached pipelines only for merge requests and only
    containing that job, and not running the other jobs for merge requests
    (only for branches).
    
    That wasn’t the intention.
    
    Follow the guide on
    https://docs.gitlab.com/ee/ci/merge_request_pipelines/index.html#excluding-certain-jobs
    to ensure that all jobs (including `style-check-diff`) are run for merge
    requests.
    
    This means we can no longer unconditionally use
    `${CI_MERGE_REQUEST_TARGET_BRANCH_{NAME,SHA}}`, since they are only
    defined for jobs which are running against a merge request rather than a
    branch. Instead, use some `git rev-list` magic from
    https://stackoverflow.com/a/4991675/2931197 to find the newest common
    ancestor commit between the detached head that CI is running on, and the
    known or likely target branch. Do the style check against the diff
    between the newest common ancestor commit and the detached head.
    
    (Note that `${CI_MERGE_REQUEST_TARGET_BRANCH_SHA}` was never actually
    defined for any of our pipelines, since it’s only available for CI
    pipelines running on merged branches, which is a GitLab Premium
    feature. Oops, my bad.)
    
    In order to find the newest common ancestor commit, we need to pull the
    upstream remote, since the CI pipeline might be running on a fork of the
    main repository where various branches (particularly `master`) are out
    of date.
    
    Signed-off-by: Philip Withnall <withnall endlessm com>

 .gitlab-ci.yml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 367993c77..e3c18c952 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,13 +21,14 @@ variables:
     - tags
 
 style-check-diff:
+  <<: *only-default
   image: registry.gitlab.gnome.org/gnome/glib/debian-stable:v5
   stage: style-check
   allow_failure: true
-  only:
-    - merge_request
   script:
-    - git diff -U0 --no-color ${CI_MERGE_REQUEST_TARGET_BRANCH_SHA} | ./clang-format-diff.py -binary 
"clang-format-7" -p1
+    - git remote add upstream https://gitlab.gnome.org/GNOME/glib.git
+    - git fetch upstream
+    - git diff -U0 --no-color $(diff --old-line-format='' --new-line-format='' <(git rev-list --first-parent 
upstream/${CI_MERGE_REQUEST_TARGET_BRANCH_NAME:-${CI_DEFAULT_BRANCH}}) <(git rev-list --first-parent HEAD) | 
head -1) | ./clang-format-diff.py -binary "clang-format-7" -p1
 
 fedora-x86_64:
   <<: *only-default


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]