Setup Hooks: make Location a separate data type
[cabal.git] / .gitlab-ci.yml
blob3106660461663808cc4b6a35a13b592f6b20faf5
1 stages:
2   - build
4 variables:
5   # Commit of ghc/ci-images repository from which to pull Docker images
6   DOCKER_REV: "a9297a370025101b479cfd4977f8f910814e03ab"
8   GHC_VERSION: 9.6.4
9   CABAL_INSTALL_VERSION: 3.10.2.0
11 workflow:
12   rules:
13     - if: $CI_COMMIT_TAG
14       when: always
15     # Triggered if you start it from the gitlab web ui
16     - if: '$CI_PIPELINE_SOURCE == "web"'
17       when: always
18     - when: never
20 .build:
21   stage: build
22   script:
23     - bash .gitlab/ci.sh
24   artifacts:
25     expire_in: 2 week
26     paths:
27       - out/*
29 linux:
30   extends: .build
31   parallel:
32     matrix:
33       - ARCH: i386
34         TAG: x86_64-linux
35         OS:
36           - deb9
37           - deb10
38       - ARCH: x86_64
39         TAG: x86_64-linux
40         OS:
41           - centos7
42           - deb9
43           - deb10
44           - deb11
45           - deb12
46           - fedora33
47           - fedora36
48           - fedora38
49           - rocky8
50           - ubuntu18_04
51           - ubuntu20_04
52           - ubuntu22_04
53       - ARCH: aarch64
54         TAG: aarch64-linux
55         OS:
56           - deb10
57           - deb11
58           - deb12
59   tags:
60     - $TAG
61   image: "registry.gitlab.haskell.org/ghc/ci-images/$PLATFORM:$DOCKER_REV"
62   variables:
63     PLATFORM: "${ARCH}-linux-${OS}"
64     TARBALL_ARCHIVE_SUFFIX: $PLATFORM
65     TARBALL_EXT: tar.xz
66     ADD_CABAL_ARGS: "--enable-split-sections"
68 alpine-linux:
69   extends: .build
70   parallel:
71     matrix:
72       - ARCH: [i386, x86_64]
73         OS: [alpine3_12, alpine3_15, alpine3_17]
74         TAG: x86_64-linux
75       # Was 3_18 for i386 intentionally left off?
76       - ARCH: x86_64
77         OS: alpine3_18
78         TAG: x86_64-linux
79       - ARCH: [aarch64]
80         OS: [alpine3_18]
81         TAG: aarch64-linux
82   tags:
83     - $TAG
84   before_script:
85     # for cabal build
86     - sudo apk add --no-cache zlib zlib-dev zlib-static
87   image: "registry.gitlab.haskell.org/ghc/ci-images/$PLATFORM:$DOCKER_REV"
88   variables:
89     PLATFORM: "${ARCH}-linux-${OS}"
90     TARBALL_ARCHIVE_SUFFIX: $PLATFORM
91     TARBALL_EXT: tar.xz
92     ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
94 darwin:
95   extends: .build
96   parallel:
97     matrix:
98       # Help me with names pls
99       - ARCH: x86_64
100         ARCHARCH: x86_64
101       - ARCH: aarch64
102         ARCHARCH: arm64
103   tags:
104     - ${ARCH}-darwin-m1
105   variables:
106     # Using 9.8.2 to work around
107     # https://gitlab.haskell.org/ghc/ghc/-/issues/24050
108     GHC_VERSION: 9.8.2
109     TARBALL_ARCHIVE_SUFFIX: ${ARCH}-darwin
110     TARBALL_EXT: tar.xz
111     ADD_CABAL_ARGS: ""
112   script:
113     - arch -${ARCHARCH} /bin/bash .gitlab/ci.sh
115 x86_64-windows:
116   extends: .build
117   script:
118     - $env:CHERE_INVOKING = "yes"
119     - bash '-lc' "ADD_CABAL_ARGS=$env:ADD_CABAL_ARGS GHC_VERSION=$env:GHC_VERSION CABAL_INSTALL_VERSION=$CABAL_INSTALL_VERSION .gitlab/ci.sh"
120   tags:
121     - new-x86_64-windows
122   variables:
123     TARBALL_ARCHIVE_SUFFIX: x86_64-windows
124     TARBALL_EXT: zip
125     ADD_CABAL_ARGS: ""
126   retry: 2