update (CicleCI) CI script to work with ghc-ci
[ghc.git] / .gitlab-ci.yml
1 variables:
2   GIT_SSL_NO_VERIFY: "1"
3
4 before_script:
5   - python .gitlab/fix-submodules.py
6   - git submodule sync --recursive
7   - git submodule update --init --recursive
8   - git checkout .gitmodules
9
10 ############################################################
11 # Validation via Pipelines (hadrian)
12 ############################################################
13
14 .validate-hadrian:
15   script:
16     - bash .circleci/prepare-system.sh
17     - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi
18     - ./boot
19     - ./configure
20     - hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh`
21   cache:
22     key: hadrian
23     paths:
24       - cabal-cache
25   image: ghcci/x86_64-linux:0.0.8
26
27 .validate-x86_64-linux-hadrian:
28   extends: .validate-hadrian
29   before_script:
30     # workaround for docker permissions
31     - sudo chown ghc:ghc -R .
32   tags:
33     - x86_64-linux
34
35 ############################################################
36 # Validation via Pipelines (make)
37 ############################################################
38
39 .validate:
40   script:
41     - make clean || true
42     - ./boot
43     - ./configure
44     - |
45       THREADS=`mk/detect-cpu-count.sh`
46       make V=0 -j$THREADS HADDOCK_DOCS=NO
47     - |
48       make binary-dist TAR_COMP_OPTS="-1"
49       mv ghc-*.tar.xz ghc.tar.xz
50     - |
51       THREADS=`mk/detect-cpu-count.sh`
52       make test THREADS=$THREADS JUNIT_FILE=../../junit.xml
53   image: ghcci/x86_64-linux:0.0.8
54   artifacts:
55     when: always
56     reports:
57       junit: junit.xml
58     paths:
59       - ghc.tar.xz
60       - junit.xml
61
62 .validate-x86_64-darwin:
63   extends: .validate
64   tags:
65     - x86_64-darwin
66   variables:
67     GHC_VERSION: 8.6.2
68     MACOSX_DEPLOYMENT_TARGET: "10.7"
69     # Only Sierra and onwards supports clock_gettime. See #12858
70     ac_cv_func_clock_gettime: "no"
71   before_script:
72     - python .gitlab/fix-submodules.py
73     - git submodule sync --recursive
74     - git submodule update --init --recursive
75     - git checkout .gitmodules
76
77     - bash .gitlab/darwin-init.sh
78     - PATH="`pwd`/toolchain/bin:$PATH"
79       # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex
80     - echo "BUILD_SPHINX_PDF=NO" >> mk/build.mk
81   after_script:
82     - cp -Rf $HOME/.cabal cabal-cache
83   cache:
84     key: darwin
85     paths:
86       - cabal-cache
87       - toolchain
88
89 validate-x86_64-linux:
90   extends: .validate
91   tags:
92     - x86_64-linux
93   before_script:
94     - python .gitlab/fix-submodules.py
95     - git submodule sync --recursive
96     - git submodule update --init --recursive
97     - git checkout .gitmodules
98
99     - bash .circleci/prepare-system.sh
100     # workaround for docker permissions
101     - sudo chown ghc:ghc -R .
102   after_script:
103     - cp -Rf $HOME/.cabal cabal-cache
104   cache:
105     key: darwin
106     paths:
107       - cabal-cache
108       - toolchain
109
110 ############################################################
111 # Validation via Pipelines (make, Windows)
112 ############################################################
113
114 .validate-x86_64-windows:
115   variables:
116     GHC_VERSION: "8.6.2"
117   script:
118     - bash -e .gitlab/win32-init.sh
119     - |
120       set MSYSTEM=MINGW64
121       python boot
122       bash -c './configure --with-ghc=`pwd`/toolchain/bin/ghc --enable-tarballs-autodownload HappyCmd=`pwd`/toolchain/bin/happy AlexCmd=`pwd`/toolchain/bin/alex'
123       mkdir -p _build
124       cp -R inplace/mingw _build/mingw
125     - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` --flavour=Quick"
126     - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh binary-dist"
127     - mv ghc-*.tar.xz ghc.tar.xz
128     - bash -c 'make V=0 -j`mk/detect-cpu-count.sh` HADDOCK_DOCS=NO test THREADS=$THREADS JUNIT_FILE=../../junit.xml'
129     - cp -Rf $APPDATA/cabal cabal-cache
130   cache:
131     key: windows
132     paths:
133       - cabal-cache
134       - ghc-8.6.2
135       - ghc-tarballs
136   tags:
137     - x86_64-windows
138
139
140 ############################################################
141 # Validation via CircleCI
142 ############################################################
143
144 .circleci:
145   image: ghcci/x86_64-linux:0.0.8
146   artifacts:
147     when: always
148     reports:
149       junit: junit.xml
150     paths:
151       - ghc.tar.xz
152       - junit.xml
153   tags:
154     - circleci
155
156 # All validation jobs keep the bindists and test results are artifacts,
157 # when we get far enough to generate them.
158 #
159 # This requires updating the maximum artifacts size limit in Gitlab to
160 # something like 200MB.
161
162 circleci-validate-x86_64-linux:
163   extends: .circleci
164   script: ".gitlab/circle-ci-job.sh validate-x86_64-linux"
165
166 circleci-validate-i386-linux:
167   extends: .circleci
168   script: ".gitlab/circle-ci-job.sh validate-i386-linux"
169
170 # circleci-validate-x86_64-freebsd:
171 #   extends: .circleci
172 #   script: ".gitlab/circle-ci-job.sh validate-x86_64-freebsd"
173
174 circleci-validate-x86_64-darwin:
175   extends: .circleci
176   script: ".gitlab/circle-ci-job.sh validate-x86_64-darwin"