Forked from
Glasgow Haskell Compiler / GHC
5479 commits behind the upstream repository.
-
This commit enables parallelism when the hadrian/ghci scripts are called in CI. The time bottleneck is in the hadrian build step, but previously the build step wasn't parallelized.
This commit enables parallelism when the hadrian/ghci scripts are called in CI. The time bottleneck is in the hadrian build step, but previously the build step wasn't parallelized.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 37.52 KiB
variables:
GIT_SSL_NO_VERIFY: "1"
# Commit of ghc/ci-images repository from which to pull Docker images
DOCKER_REV: 08bdbb85d6711e4df23d97e1cbdb557fe752b0a4
# Sequential version number of all cached things.
# Bump to invalidate GitLab CI cache.
CACHE_REV: 11
# 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: ""
# Overridden by individual jobs
CONFIGURE_WRAPPER: ""
GIT_SUBMODULE_STRATEGY: "normal"
# 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 a few different types of pipelines. Among them:
#
# 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.
#
# 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.