Add prompt strategy for `--overwrite-policy`
[cabal.git] / .gitlab-ci.yml
blob577a52eb8d3f2acf91a8b4dd233bed619c38feff
1 variables:
2   # Commit of ghc/ci-images repository from which to pull Docker images
3   DOCKER_REV: "853f348f9caf38b08740b280296fbd34e09abb3a"
5   GHC_VERSION: 8.10.7
6   CABAL_INSTALL_VERSION: 3.6.2.0
8 workflow:
9   rules:
10     - if: $CI_COMMIT_TAG
11       when: always
12     - if: '$CI_PIPELINE_SOURCE == "web"'
13       when: always
14     - when: never
16 .build:
17   script:
18     - bash .gitlab/ci.sh
19   artifacts:
20     expire_in: 2 week
21     paths:
22       - out/*
24 build-aarch64-linux-deb10:
25   extends: .build
26   tags:
27     - aarch64-linux
28   image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV"
29   variables:
30     TARBALL_ARCHIVE_SUFFIX: aarch64-linux-deb10
31     TARBALL_EXT: tar.xz
32     ADD_CABAL_ARGS: ""
34 build-armv7-linux-deb10:
35   extends: .build
36   tags:
37     - armv7-linux
38   image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV"
39   variables:
40     TARBALL_ARCHIVE_SUFFIX: armv7-linux-deb1
41     TARBALL_EXT: tar.xz
42     ADD_CABAL_ARGS: ""
43     # temp, because 3.6.2.0 is broken
44     CABAL_INSTALL_VERSION: 3.4.0.0
45   retry: 2
47 build-x86_64-linux:
48   extends: .build
49   tags:
50     - x86_64-linux
51   image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV"
52   variables:
53     TARBALL_ARCHIVE_SUFFIX: x86_64-linux-deb10
54     TARBALL_EXT: tar.xz
55     ADD_CABAL_ARGS: "--enable-split-sections"
57 build-x86_64-linux-alpine:
58   extends: .build
59   tags:
60     - x86_64-linux
61   before_script:
62     # for cabal build
63     - sudo apk add --no-cache zlib zlib-dev zlib-static
64   image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV"
65   variables:
66     TARBALL_ARCHIVE_SUFFIX: x86_64-linux-alpine
67     TARBALL_EXT: tar.xz
68     ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
70 build-i386-linux-alpine:
71   extends: .build
72   tags:
73     - x86_64-linux
74   image: "i386/alpine:3.12"
75   before_script:
76     # for GHC
77     - apk add --no-cache bash curl gcc g++ binutils binutils-gold bsd-compat-headers gmp-dev ncurses-dev libffi-dev make xz tar perl
78     # for cabal build
79     - apk add --no-cache zlib zlib-dev zlib-static
80   variables:
81     TARBALL_ARCHIVE_SUFFIX: i386-linux-alpine
82     TARBALL_EXT: tar.xz
83     ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
84     # temp, because 3.6.2.0 is broken
85     CABAL_INSTALL_VERSION: 3.4.0.0
87 build-x86_64-freebsd13:
88   extends: .build
89   tags:
90     - x86_64-freebsd13
91   variables:
92     TARBALL_ARCHIVE_SUFFIX: x86_64-freebsd13
93     TARBALL_EXT: tar.xz
94     ADD_CABAL_ARGS: "--enable-split-sections"
96 build-x86_64-freebsd12:
97   extends: .build
98   tags:
99     - x86_64-freebsd12
100   variables:
101     TARBALL_ARCHIVE_SUFFIX: x86_64-freebsd12
102     TARBALL_EXT: tar.xz
103     ADD_CABAL_ARGS: "--enable-split-sections"
105 build-x86_64-darwin:
106   extends: .build
107   tags:
108     - x86_64-darwin
109   variables:
110     TARBALL_ARCHIVE_SUFFIX: x86_64-darwin
111     TARBALL_EXT: tar.xz
112     ADD_CABAL_ARGS: ""
114 build-aarch64-darwin:
115   tags:
116     - aarch64-darwin-m1
117   script: |
118     set -Eeuo pipefail
119     function runInNixShell() {
120       time nix-shell $CI_PROJECT_DIR/.gitlab/shell.nix \
121         -I nixpkgs=https://github.com/angerman/nixpkgs/archive/75f7281738b.tar.gz \
122         --argstr system "aarch64-darwin" \
123         --pure \
124         --keep CI_PROJECT_DIR \
125         --keep MACOSX_DEPLOYMENT_TARGET \
126         --keep GHC_VERSION \
127         --keep CABAL_INSTALL_VERSION \
128         --keep TARBALL_ARCHIVE_SUFFIX \
129         --keep TARBALL_EXT \
130         --keep ADD_CABAL_ARGS \
131         --run "$1" 2>&1
132     }
133     runInNixShell "./.gitlab/ci.sh" 2>&1
134   variables:
135     MACOSX_DEPLOYMENT_TARGET: "10.7"
136     TARBALL_ARCHIVE_SUFFIX: aarch64-darwin
137     TARBALL_EXT: tar.xz
138     ADD_CABAL_ARGS: ""
139   artifacts:
140     expire_in: 2 week
141     paths:
142       - out/*
144 build-x86_64-windows:
145   extends: .build
146   script:
147     - Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $false, $true, $true, $false, $false, $false, $false, "$CI_PROJECT_DIR"
148     - ./ghcup/msys64/usr/bin/bash '-lc' 'pacman --noconfirm -S zip'
149     - $env:CHERE_INVOKING = "yes"
150     - ./ghcup/msys64/usr/bin/bash '-lc' "TARBALL_ARCHIVE_SUFFIX=$env:TARBALL_ARCHIVE_SUFFIX TARBALL_EXT=$env:TARBALL_EXT ADD_CABAL_ARGS=$env:ADD_CABAL_ARGS GHC_VERSION=$env:GHC_VERSION CABAL_INSTALL_VERSION=$CABAL_INSTALL_VERSION .gitlab/ci.sh"
151   after_script:
152     - "[Environment]::SetEnvironmentVariable('GHCUP_INSTALL_BASE_PREFIX', $null, [System.EnvironmentVariableTarget]::User)"
153     - "[Environment]::SetEnvironmentVariable('GHCUP_MSYS2', $null, [System.EnvironmentVariableTarget]::User)"
154     - "[Environment]::SetEnvironmentVariable('CABAL_DIR', $null, [System.EnvironmentVariableTarget]::User)"
155   tags:
156     - new-x86_64-windows
157   variables:
158     TARBALL_ARCHIVE_SUFFIX: x86_64-windows
159     TARBALL_EXT: zip
160     ADD_CABAL_ARGS: ""
161   retry: 2