summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2020-04-03 19:01:36 -0400
committerBen Gamari <ben@smart-cactus.org>2020-06-20 21:31:42 -0400
commit14ce264c2014c49af4dfe66acbc332077a53eee7 (patch)
treefb1da61c6b245bfc7e48595ec25f813c3caf99f3
parentbee002a5ef4baab062239a234990cc5e7dc44864 (diff)
downloadhaskell-14ce264c2014c49af4dfe66acbc332077a53eee7.tar.gz
gitlab-ci: Introduce DWARF release jobs for Deb10 and Fedora 27
(cherry picked from commit 481e31740672a37c5b3a8924bba7e15c4080bc2e)
-rw-r--r--.gitlab-ci.yml149
1 files changed, 86 insertions, 63 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5220275b75..bd721ecb0b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,11 +25,12 @@ stages:
- deploy # push documentation
.only-default: &only-default
- only:
- - master
- - /ghc-[0-9]+\.[0-9]+/
- - merge_requests
- - tags
+ rules:
+ - if: $CI_MERGE_REQUEST_ID
+ - if: $CI_COMMIT_TAG
+ - if: '$CI_COMMIT_BRANCH == "master"'
+ - if: '$CI_COMMIT_BRANCH =~ /ghc-[0.9]+\.[0-9]+/'
+ - if: '$CI_PIPELINE_SOURCE == "web"'
############################################################
# Runner Tags
@@ -42,6 +43,20 @@ stages:
# x86_64-linux to ensure low-latency availability.
#
+.nightly: &nightly
+ rules:
+ - if: $NIGHTLY
+
+.release: &release
+ variables:
+ BUILD_FLAVOUR: "perf"
+ FLAVOUR: "perf"
+ artifacts:
+ when: always
+ expire_in: 1 year
+ rules:
+ - if: '$RELEASE == "yes"'
+
############################################################
# Linting
@@ -62,9 +77,8 @@ ghc-linters:
dependencies: []
tags:
- lint
- only:
- refs:
- - merge_requests
+ rules:
+ - if: $CI_MERGE_REQUEST_ID
# We allow the submodule checker to fail when run on merge requests (to
# accomodate, e.g., haddock changes not yet upstream) but not on `master` or
@@ -80,18 +94,16 @@ ghc-linters:
lint-submods:
extends: .lint-submods
- only:
- refs:
- - master
- - /ghc-[0-9]+\.[0-9]+/
- - wip/marge_bot_batch_merge_job
+ rules:
+ - if: '$CI_MERGE_REQUEST_LABELS =~ /.*marge_bot_batch_merge_job.*/'
+ allow_failure: false
+ - allow_failure: true
lint-submods-mr:
extends: .lint-submods
allow_failure: true
- only:
- refs:
- - merge_requests
+ rules:
+ - if: $CI_MERGE_REQUEST_ID
.lint-changelogs:
stage: lint
@@ -105,15 +117,13 @@ lint-submods-mr:
lint-changelogs:
extends: .lint-changelogs
allow_failure: true
- only:
- refs:
- - /ghc-[0-9]+\.[0-9]+/
+ rules:
+ - if: '$CI_COMMIT_BRANCH =~ /ghc-[0.9]+\.[0-9]+/'
lint-release-changelogs:
extends: .lint-changelogs
- only:
- refs:
- - /ghc-[0-9]+\.[0-9]+\.[0-9]+-.*-release/
+ rules:
+ - if: '$CI_COMMIT_BRANCH =~ /ghc-[0.9]+\.[0-9]+/'
############################################################
@@ -281,14 +291,12 @@ validate-aarch64-linux-deb9:
expire_in: 2 week
nightly-aarch64-linux-deb9:
+ <<: *nightly
extends: .build-aarch64-linux-deb9
artifacts:
expire_in: 2 year
variables:
TEST_TYPE: slowtest
- only:
- variables:
- - $NIGHTLY
#################################
# i386-linux-deb9
@@ -311,15 +319,27 @@ validate-i386-linux-deb9:
expire_in: 2 week
nightly-i386-linux-deb9:
+ <<: *nightly
extends: .build-i386-linux-deb9
variables:
TEST_TYPE: slowtest
artifacts:
when: always
expire_in: 2 week
- only:
- variables:
- - $NIGHTLY
+
+#################################
+# x86_64-linux-deb10
+#################################
+
+.build-x86_64-linux-deb10:
+ extends: .validate-linux
+ stage: full-build
+ image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV"
+ variables:
+ TEST_ENV: "x86_64-linux-deb10"
+ BIN_DIST_PREP_TAR_COMP: "./ghc-x86_64-deb10-linux.tar.xz"
+ cache:
+ key: linux-x86_64-deb10
#################################
# x86_64-linux-deb9
@@ -342,14 +362,12 @@ validate-x86_64-linux-deb9:
expire_in: 2 week
nightly-x86_64-linux-deb9:
+ <<: *nightly
extends: .build-x86_64-linux-deb9
artifacts:
expire_in: 2 year
variables:
TEST_TYPE: slowtest
- only:
- variables:
- - $NIGHTLY
# N.B. Has DEBUG assertions enabled in stage2
validate-x86_64-linux-deb9-debug:
@@ -377,6 +395,7 @@ validate-x86_64-linux-deb9-integer-simple:
BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-deb9-linux-integer-simple.tar.xz"
nightly-x86_64-linux-deb9-integer-simple:
+ <<: *nightly
extends: .build-x86_64-linux-deb9
stage: full-build
variables:
@@ -385,9 +404,6 @@ nightly-x86_64-linux-deb9-integer-simple:
TEST_TYPE: slowtest
artifacts:
expire_in: 2 year
- only:
- variables:
- - $NIGHTLY
validate-x86_64-linux-deb9-unreg:
extends: .build-x86_64-linux-deb9
@@ -413,11 +429,21 @@ release-x86_64-linux-deb9-dwarf:
key: linux-x86_64-deb9
+release-x86_64-linux-deb10-dwarf:
+ <<: *release
+ extends: .build-x86_64-linux-deb10
+ variables:
+ CONFIGURE_ARGS: "--enable-dwarf-unwind"
+ BUILD_FLAVOUR: dwarf
+ TEST_ENV: "x86_64-linux-deb10-dwarf"
+ BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-deb10-linux-dwarf.tar.xz"
+
#################################
# x86_64-linux-deb8
#################################
release-x86_64-linux-deb8:
+ <<: *release
extends: .validate-linux
stage: full-build
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb8:$DOCKER_REV"
@@ -426,8 +452,6 @@ release-x86_64-linux-deb8:
BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-deb8-linux.tar.xz"
# Disable sphinx PDF output as our Debian image doesn't have the requisite packages
BUILD_SPHINX_PDF: "NO"
- only:
- - tags
cache:
key: linux-x86_64-deb8
artifacts:
@@ -439,6 +463,7 @@ release-x86_64-linux-deb8:
#################################
release-x86_64-linux-centos7:
+ <<: *release
extends: .validate-linux
stage: full-build
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV"
@@ -451,8 +476,6 @@ release-x86_64-linux-centos7:
TEST_ENV: "x86_64-linux-centos7"
BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-centos7-linux.tar.xz"
allow_failure: true
- only:
- - tags
cache:
key: linux-x86_64-centos7
artifacts:
@@ -463,7 +486,7 @@ release-x86_64-linux-centos7:
# x86_64-linux-fedora27
#################################
-validate-x86_64-linux-fedora27:
+.build-x86_64-linux-fedora27:
extends: .validate-linux
stage: full-build
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora27:$DOCKER_REV"
@@ -472,12 +495,28 @@ validate-x86_64-linux-fedora27:
BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-fedora27-linux.tar.xz"
cache:
key: linux-x86_64-fedora27
+
+validate-x86_64-linux-fedora27:
+ extends: .build-x86_64-linux-fedora27
artifacts:
when: always
# These are used for head.hackage jobs therefore we keep them around for
# longer.
expire_in: 8 week
+release-x86_64-linux-fedora27:
+ <<: *release
+ extends: .build-x86_64-linux-fedora27
+
+release-x86_64-linux-fedora27-dwarf:
+ <<: *release
+ extends: .build-x86_64-linux-fedora27
+ variables:
+ CONFIGURE_ARGS: "--enable-dwarf-unwind"
+ BUILD_FLAVOUR: dwarf
+ TEST_ENV: "x86_64-linux-fedora27-dwarf"
+ BIN_DIST_PREP_TAR_COMP: "ghc-x86_64-fedora27-linux-dwarf.tar.xz"
+
############################################################
# Validation via Pipelines (Windows)
############################################################
@@ -546,12 +585,10 @@ validate-x86_64-windows-hadrian:
key: "x86_64-windows-hadrian-$WINDOWS_TOOLCHAIN_VERSION"
nightly-i386-windows-hadrian:
+ <<: *nightly
extends: .build-windows-hadrian
variables:
MSYSTEM: MINGW32
- only:
- variables:
- - $NIGHTLY
cache:
key: "i386-windows-hadrian-$WINDOWS_TOOLCHAIN_VERSION"
@@ -597,18 +634,16 @@ validate-x86_64-windows:
# Normal Windows validate builds are profiled; that won't do for releases.
release-x86_64-windows:
+ <<: *release
extends: validate-x86_64-windows
variables:
MSYSTEM: MINGW64
BUILD_FLAVOUR: "perf"
CONFIGURE_ARGS: "--target=x86_64-unknown-mingw32"
- only:
- - tags
release-i386-windows:
+ <<: *release
extends: .build-windows-make
- only:
- - tags
variables:
MSYSTEM: MINGW32
BUILD_FLAVOUR: "perf"
@@ -619,10 +654,8 @@ release-i386-windows:
key: "i386-windows-$WINDOWS_TOOLCHAIN_VERSION"
nightly-i386-windows:
+ <<: *nightly
extends: .build-windows-make
- only:
- variables:
- - $NIGHTLY
variables:
MSYSTEM: MINGW32
CONFIGURE_ARGS: "--target=i386-unknown-mingw32"
@@ -653,7 +686,6 @@ cleanup-windows:
stage: cleanup
tags:
- x86_64-windows
- when: always
dependencies: []
before_script:
- echo "Time to clean up"
@@ -676,7 +708,6 @@ cleanup-darwin:
stage: cleanup
tags:
- x86_64-darwin
- when: always
dependencies: []
before_script:
- echo "Time to clean up"
@@ -694,13 +725,12 @@ cleanup-darwin:
############################################################
source-tarball:
+ <<: *release
stage: packaging
tags:
- x86_64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
dependencies: []
- only:
- - tags
artifacts:
paths:
- ghc-*.tar.xz
@@ -738,19 +768,12 @@ source-tarball:
script:
- bash .gitlab/start-head.hackage.sh
-hackage:
- extends: .hackage
- when: manual
-
hackage-label:
extends: .hackage
- only:
- variables:
- - $CI_MERGE_REQUEST_LABELS =~ /.*user-facing.*/
+ rules:
+ - if: '$CI_MERGE_REQUEST_LABELS =~ /.*user-facing.*/'
nightly-hackage:
+ <<: *nightly
extends: .hackage
- only:
- variables:
- - $NIGHTLY