Forked from
Glasgow Haskell Compiler / GHC
8881 commits behind the upstream repository.
-
And adds a check to make sure we are not accidently settings BIN_DIST_PREP_TAR_COMP when using hadrian.
And adds a check to make sure we are not accidently settings BIN_DIST_PREP_TAR_COMP when using hadrian.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 41.78 KiB
variables:
GIT_SSL_NO_VERIFY: "1"
# Commit of ghc/ci-images repository from which to pull Docker images
DOCKER_REV: 885dfba7f74583d6a394dbf711cc805178cfcc47
# Sequential version number of all cached things.
# Bump to invalidate GitLab CI cache.
CACHE_REV: 4
# Disable shallow clones; they break our linting rules
GIT_DEPTH: 0
# Always start with a fresh clone to avoid non-hermetic builds
GIT_STRATEGY: clone
# Overridden by individual jobs
CONFIGURE_ARGS: ""
GIT_SUBMODULE_STRATEGY: "recursive"
HACKAGE_INDEX_STATE: "2020-12-21T14:48:20Z"
# Makes ci.sh isolate CABAL_DIR
HERMETIC: "YES"
# Reduce XZ compression level for regular jobs (it is bumped to 9 for releases
# and nightly jobs). In my experiments I've got the following bindist size in
# the given time for each compression level (with the quick flavour):
#
# XZ_OPT Time Size
# -9 4m06s 112 MB
# -8 4m00s 114 MB
# -7 3m50s 116 MB
# -6 (default) 3m40s 118 MB
# -5 2m47s 123 MB
# -4 1m57s 134 MB
# -3 1m03s 129 MB
# -2 49.73s 136 MB
# -1 37.72s 142 MB
# -0 34.40s 156 MB
#
XZ_OPT: "-1"
default:
interruptible: true
stages:
- not-interruptible
- tool-lint # Source linting of the tools
- quick-build # A very quick smoke-test to weed out broken commits
- full-build # Build all the things
- packaging # Source distribution, etc.
- testing # head.hackage correctness and compiler performance testing
- deploy # push documentation
# Note [The CI Story]
# ~~~~~~~~~~~~~~~~~~~
#
# There are two different types of pipelines:
#
# - 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
# testing. Namely we omit some configurations (e.g. the unregisterised job).
# These use the merge request's base commit for performance metric
# comparisons.
#