[Git][ghc/ghc][wip/fork-duplicate-pipelines] Guard against duplicate pipelines in forks
Bryan R (@chreekat)
gitlab at gitlab.haskell.org
Thu Aug 17 14:25:34 UTC 2023
Bryan R pushed to branch wip/fork-duplicate-pipelines at Glasgow Haskell Compiler / GHC
Commits:
2c527c11 by Bryan Richter at 2023-08-17T17:25:25+03:00
Guard against duplicate pipelines in forks
- - - - -
1 changed file:
- .gitlab-ci.yml
Changes:
=====================================
.gitlab-ci.yml
=====================================
@@ -57,26 +57,45 @@ stages:
# Note [The CI Story]
# ~~~~~~~~~~~~~~~~~~~
#
-# There are two different types of pipelines:
+# There are a few different types of pipelines. Among them:
#
-# - marge-bot merges to `master`. Here we perform an exhaustive validation
+# 1. marge-bot merges to `master`. Here we perform an exhaustive validation
# across all of the platforms which we support. In addition, we push
# performance metric notes upstream, providing a persistent record of the
# performance characteristics of the compiler.
#
-# - merge requests. Here we perform a slightly less exhaustive battery of
+# 2. merge requests. Here we perform a slightly less exhaustive battery of
# testing. Namely we omit some configurations (e.g. the unregisterised job).
# These use the merge request's base commit for performance metric
# comparisons.
#
-
+# These and other pipelines are defined implicitly by the rules of individual
+# jobs.
+#
+# At the top level, however, we can declare that pipelines (of whatever type)
+# only run when:
+#
+# 1. Processing a merge request (as mentioned above)
+#
+# 2. Processing a tag
+#
+# 3. Pushing to master on the root ghc/ghc repo (as mentioned above)
+#
+# 4. Pushing to a release branch on the root ghc/ghc repo
+#
+# 5. Somebody manually triggers a pipeline from the GitLab UI
+#
+# In particular, note that pipelines don't automatically run just when changes
+# are pushed to a feature branch.
workflow:
- # N.B. Don't run on wip/ branches, instead on run on merge requests.
rules:
- if: $CI_MERGE_REQUEST_ID
- if: $CI_COMMIT_TAG
- - if: '$CI_COMMIT_BRANCH == "master"'
- - if: '$CI_COMMIT_BRANCH =~ /ghc-[0-9]+\.[0-9]+/'
+ # N.B.: If we weren't explicit about CI_PROJECT_ID, the following rule would
+ # cause a duplicate pipeline for merge requests coming from the master
+ # branch of a fork.
+ - if: $CI_PROJECT_ID == "1" && $CI_COMMIT_BRANCH == "master"
+ - if: $CI_PROJECT_ID == "1" && $CI_COMMIT_BRANCH =~ /ghc-[0-9]+\.[0-9]+/
- if: '$CI_PIPELINE_SOURCE == "web"'
# which versions of GHC to allow bootstrap with
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/2c527c1190eba059a62869872e8164f59e915ade
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/2c527c1190eba059a62869872e8164f59e915ade
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230817/539ea67b/attachment-0001.html>
More information about the ghc-commits
mailing list